如果希望监听TCP端口9000,服务器端应该怎样创建socket?
A. new Socket("localhost",9000);
B. new ServerSocket(9000);
C. new Socket(9000);
D. new ServerSocket("localhost",9000);
答案:B
下列哪个类的声明是正确的?
A. abstract final class HI{}
B. abstract private move(){}
C. protected private number;
D. public abstract class Car
答案:D
java 接口的修饰符可以为()
A. private
B. protected
C. final
D. abstract
答案:D
jre 判断程序是否执行结束的标准是()
A. 所有的前台线程执行完毕
B. 所有的后台线程执行完毕
C. 所有的线程执行完毕
D. 和以上都无关
答案:A
int i=5; int s=(i++)+(++i)+(i--)+(--i); s=( )//s 的值是什么?
A. 28
B. 25
C. 21
D. 26
E. 24
F. 23
答案:E
如下语句通过算术运算和逻辑运算之后i和 j的结果是()
int i=0; int j=0; if((++i>0)||(++j>0)) { //打印出i和j的值。 }
A. i=0;j=0
B. i=1;j=1
C. i=0;j=1
D. i=1;j=0
答案:D
下面不属于Object类中方法的是:
A. hashCode()
B. finally()
C. wait()
D. toString()
答案:B
下列哪项不属于jdk1.6垃圾收集器?
A. Serial收集器
B. parNew收集器
C. CMS收集器
D. G1收集器
答案:D
instanceof运算符能够用来判断一个对象是否为:
A. 一个类的实例
B. 一个实现指定接口的类的实例
C. 全部正确
D. 一个子类的实例
答案:C
对于java类型变量char c,short s,float f,double d,表达式c*s+f+d的结果类型为()
A. float
B. char
C. short
D. double
答案:D
反转部分单链表
题目描述:给定一个单链表,在链表中把第 L 个节点到第 R 个节点这一部分进行反转。
输入描述:n 表示单链表的长度。 val 表示单链表各个节点的值。L 表示翻转区间的左端点。 R 表示翻转区间的右端点。
输出描述:在给定的函数中返回指定链表的头指针。
public class Main44 { //首先定义单链表的节点 static class Node{ int val; Node next; public Node(int val){ this.val=val; } } public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //获取当前链表的节点个数 int n=scanner.nextInt(); //吃掉nextInt方法的换行符 scanner.nextLine(); // "1 2 3 4 5" String nodeValue=scanner.nextLine(); String[] nodes=nodeValue.split(" "); //进行链表的创建 Node dummyHead=new Node(-1); Node tail=dummyHead; for (int i = 0; i < n; i++) { //链表的尾插 Node node=new Node(Integer.parseInt(nodes[i])); tail.next=node; tail=node; } //获取左区间和右区间的范围 "1 3" String part=scanner.nextLine(); //1 int left=Integer.parseInt(part.split(" ")[0]); //3 int right=Integer.parseInt(part.split(" ")[1]); Node newHead=reversePartList(dummyHead.next,left,right); //进行输出处理 while (newHead !=null){ System.out.print(newHead.val+" "); newHead=newHead.next; } } public static Node reversePartList(Node head,int left,int right){ Node dummyHead=new Node(-1); dummyHead.next=head; Node prev=dummyHead; for (int i = 1; i < left; i++) { prev=prev.next; } //prev引用指向待反转区间的前驱节点,cur引用就是待反转区间的第一个节点 Node cur=prev.next; for (int i = left; i < right; i++) { Node third=cur.next; //先把third引用从链表中删除 cur.next=third.next; //再把third节点插入prev中 third.next=prev.next; prev.next=third; } return dummyHead.next; } }
猴子分桃
题目描述:老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。 第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。 第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。 后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。
这里有n只小猴子,请你写个程序计算一下在开始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。
输入描述:输入包括多组测试数据。
每组测试数据包括一个整数n(1≤n≤20)。
输入以0结束,该行不做处理。
输出描述:每组测试数据对应一行输出。
包括两个整数a,b。
分别代表开始时最小需要的桃子数,和结束后老猴子最少能得到的桃子数。
public class Main45 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while (scanner.hasNext()){ int n=scanner.nextInt(); if (n==0){ break; } long a=(long) (Math.pow(5,n)-4); long b=(long) (Math.pow(4,n)+n-4); System.out.println(a+" "+b); } } }