Java程序设计基础习题答案 下载本文

for(int j = 0; j < b.length; j++){ System.out.print(b[j]+\ } }

3. 从命令行输入5个整数到数组a中,分别输入33、55、22、66及77。求偶数的个数及其和。

参考答案:示例代码:

public static void main(String[] args) { int a[] = new int[5]; int count = 0; int sum = 0; for (int i = 0; i < a.length; i++) { System.out.print(\请输入数组中的元素:\ Scanner read = new Scanner(System.in); a[i] = read.nextInt(); if (i % 2 != 0) { count++; sum = sum + a[i]; } } System.out.println(\偶数个数是: \ System.out.println(\偶数的和是: \ }

4. 从命令行输入一个字符串“JavaServlet”,将每个字符存入a数组。

(1)大写字母有几个?分别是那几个? (2)小写字母有几个?分别是那几个?

(3)将小写字母转换成大写字母,大写字母转换成小写字母。 参考答案:

public static void main(String[] args) { if(args[0] != \ String inputString = args[0]; int countLower = 0; int countUpper = 0; String strLower = \ String strUpper = \ for (int i = 0; i < inputString.length(); i++){ char c = inputString.charAt(i); if (Character.isUpperCase(c)) { countUpper++; strUpper += c + \ } else if (Character.isLowerCase(c)) { countLower++;

strLower += c + \ } } System.out.println(\大写字母有\+ countUpper + \个,分别是:\+ strUpper); System.out.println(\小写字母有\+ countUpper + \个,分别是:\+ strLower); } }

5. 阅读下面代码:

int[] ages = new int[10]; System.out.println(ages[9]);

下面关于上面两行代码的说法哪一个正确的? (1)编译时发生错误

(2)编译通过,运行时发生错误,因为局部变量在没有初始化情况下,不能使用

(3)编译通过,执行之后向控制台输出结果为0 (4)编译通过,执行时提示发生数组越界的错误 参考答案:(3)为正确选项。

6. 阅读下面代码:

public class AClass {

public static void main(String[] args) {

String[] msg = {\ if(args.length==0) {

System.out.println(\

} else {

System.out.println(msg[args.length]+\} } }

下面哪个选项的说法是正确的? (1)该代码无法编译通过

(2)不带任何参数运行该程序时,会抛出NullPointerException异常

(3)分别带0个参数、3个参数运行该程序时,会打印No arguments和two arguments

(4)分别带0个参数、3个参数运行该程序时,会打印No arguments和four arguments

参考答案:(4)为正确选项。

6. 从命令行输入八个参数,并以气泡法排序后保存在a数组中,然后再输入一个查找键值Key,按顺序查找判断该键值是否存在与a数组中。 参考答案:参考代码:

public static void main(String[] args) { int i, j, t, temp; int array[] = new int[8]; System.out.println(\输入8个整数:\输入8个整数 */ for (i = 0; i < array.length; i++) { System.out.print(\请输入:\ Scanner read = new Scanner(System.in); array[i] = read.nextInt(); } /* 冒泡排序 */ for (i = 0; i < array.length; i++) { for (j = array.length - 1; j > i; j--) if (array[j] > array[j - 1]) { t = array[j]; array[j] = array[j - 1]; array[j - 1] = t; } } /* 输出排序后的数组元素 */ for (i = 0; i < array.length; i++) { System.out.print(array[i] + \ } System.out.println(\输入一个整数作为键值Key: \ Scanner read = new Scanner(System.in); temp = read.nextInt(); for (i = 0; i < array.length && temp <= array[i]; i++) /* 在排序后的数组中查找 */ { if (temp == array[i]) { System.out.printf(\是您所找的数.\\n\在数组中有可能有相等的元素 */ } else if (temp != array[i - 1]) { System.out.printf(\数组中没有您想找的数.\数组中没有所输入的数 */ } }

}

8. 现有一个长度为49的整型数组a[49],不重复的将1-50之中49个数依次赋值给该数组,编写程序找出没有放进该数组的是哪个数?

参考答案:

public static int findNum(int a[]) { int numFound = 0; Arrays.sort(a); System.out.println(Arrays.toString(a)); for (int i = 0; i < 50; i++) { if (a[i] != (i + 1)) { numFound = i+1; break; } } return numFound; }

第6章

1. 指出下面声明中的语法错误(如果有)。记住,域声明的某些部分是可选的。

(1)public boolean isEven; (2)private boolean isEven; (3)private boolean is Odd; (4)public boolean is Odd; (5)string S;

(6)private boolean even = 0; (7)private String s = helloWorld; 参考答案:

(3)和(4)均存在变量名命名错误; (5)string并不是一个类型,应为String。

(6)布尔类型变量的值应该为“true”或者“false”,不应该为整型。 (7)helloWorld不是一个字符串,必须用双引号,如:”helloWorld”。

2. 写出下列实例变量的声明:

(1)名为bool的私有boolean型变量,初始值为真。 (2)名为str的公共string型变量,初始值为“hello”。 (3)名为nEmployees的私有int型变量,没有初始值。 参考答案:

(1)private Boolean bool = true; (2)public String str = “hello”; (3)private int nEmployees;

3. 创建如下类:

Circle类(圆形),Square类(正方形)和Point类(点)。Point根据(x,y)坐标定位。Cricle除了一个(x,y)坐标之外,还有半径属性。正方形除了一个(x,y)坐标之外,还有边长。请问这些类中那些是超类,那些是子类?

参考答案:

Point类(点)为超类,而Circle类(圆形)和Square类(正方形)为子类。

4. 关键字组合问题:

(1)abstract方法能否是final类型的? (2)abstract方法能否是static类型的?

(3)能否定义一个私有静态(private static)方法? 参考答案:

(1)abstract不能用final 修饰符修饰; (2)abstract方法不能是static类型的; (3)不能定义一个私有静态方法。

5. 阅读下面代码:

1. public class Test{ 2. void test(short s) {

3. System.out.println(\ 4. }

5. void test(byte b) {

6. System.out.println(\ 7. } 8.

9. public static void main(String args[]) { 10. Test t=new Test(); 11. char ch='y'; 12. t.test(ch); 13. } 14. }

下面对于上述代码的描述哪个是正确的?

(1)第5行无法编译,因为void方法不能被重载(overridden)

(2)第12行无法编译,因为没有定义可以接受char类型参数的方法 (3)代码可以编译,但执行时在12行会抛出异常

(4)代码可以编译,并且执行之后的输出结果为:I am an int 参考答案:(2)为正确参考答案。

6. 阅读下面代码,请确定a、b、c、d中的哪一个说法是正确的? class A { int value1; } class B extends A { int value2; }

(2)类A扩展了类B (2)类B是类A的父类 (3)类B是类A的子类