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

}??while(n<1000);?? (3)

for(int n=0;n<=1000;n++)??{

if(n==0) {

system.out.print(n); }

9. 给定N,编程实现打印行数为N的菱形。 参考答案:

public static void main(String[] args) { Scanner read = new Scanner(System.in); int n; while (true) { System.out.println(\输入一个整数(>=0)\ if (read.hasNextInt()) { n = read.nextInt(); if (n < 0) continue; break; } else { read.next();

}

} for (int i = 0; i < n; i++) { for (int j = 1; j < n - i; j++) System.out.print(\ for (int j = 0; j < i * 2 + 1; j++) System.out.print(\ for (int j = 1; j < n - i; j++) System.out.print(\ System.out.println(); } for (int i = n - 2; i >= 0; i--) { for (int j = 1; j < n - i; j++) System.out.print(\ for (int j = 0; j < i * 2 + 1; j++) System.out.print(\ for (int j = 1; j < n - i; j++) System.out.print(\ System.out.println(); } }

10. 写出下面程序的输出结果:

public class TestWhile { public static void main(String[] args) { int a=0; while(++a<=100) if ((a%9)==0) System.out.print(a+\ System.out.println(); }

}

参考答案:9 18 27 36 45 54 63 72 81 90 99

第4章

1. 比较String和StringBuffer的区别,并说明什么时候适合使用StringBuffer。 参考答案:

在Java中,String被完全当成一个对象,一个String对象是组成这个字符串的字符序列,加上用来操作字符串的方法。字符串一旦被创建,就不能改变它的值。StringBuffer类同样能够表示一串字符。但是,与String类不同,一个StringBuffer类能够被修改,StringBuffer类维护的是一个字符缓冲区,在必要时它的长度能够增长和缩短。对任何涉及修改字符串的任务,应该用StringBuffer代替String。

2. 说明==和equals的区别,并举例。 参考答案:

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals 操作表示的是两个变量是否是对同一个对象的引用,即堆中的内容是否相同。==比较的是两个对象的地址,而equals比较的是两个对象的内容。

3. 假定s是字符串字面值“exercise”,找出下列表达式有语法错误的并改正: (1)s.charAt(\ (2)s.indexOf(\ (3)s.substring(5)

(4)s.lastIndexOf(er) (5)s.length() 参考答案:

其中(1)和(4)表达式有语法错误。(1) charAt(int) 参数是int 类型的;(4)lastIndexOf() 中的参数应该为int 或者 String ,这里的er 既不是int 也不是String。

4. 给定一个句子,统计单词中字母的出现次数(字母不区分大小写,全部按照小写计算)。

参考答案:参考代码 import java.util.Scanner;

public class countChar {

public static void main(String[] args) { //输入需要检测的字符串 System.out.print(\:\ Scanner str0 = new Scanner(System.in); String s = str0.next(); System.out.println(\ s = s.toLowerCase(); //将字符串转换为小写 //输入需要统计的字符 System.out.print(\:\ Scanner str1 = new Scanner(System.in); String s1 = str1.next(); char c = s1.charAt(0); System.out.println(\:\ int count = 0; //统计出现次数变量 for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); if (ch == c) { count++; } } System.out.println(\ } }

5. 执行String s = new String(\这一语句,共创建几个String对象?

参考答案:两个。\本身是一个字符串对象,而new String()也会创造一个字符串对象。

6. 对于语句String s = \下面那个表达式是合法的?

(1)s += 5;

(2)char c = s[1] (3)int len = s.length;

(4)String t = s.toLowCase; 参考答案:(1)为合法的。

7. String和StringBuffer中的哪个方法能改变调用该方法的对象自身的值?

(1)String的charAt() (2)String的replace()

(3)String的toUpperCase() (4)StringBuffer的reverse()

参考答案:(4)StringBuffer的reverse()可以改变对象自身的值。

8. 假定s是字符串字面值“exercise”,计算下面每个表达式的值:

(1)s.charAt(5) (2)s.indexOf(\(3)s.substring(5) (4)s.lastIndexOf(?e?) (5)s.length() 参考答案: (1)i; (2)2; (3)ise; (4)0; (5)8;

9. 写出下面程序的输出结果:

public class StringExample {

public static void main(String[] args) { String str = new String(\ String str1 = \

String str2 = new String(\ System.out.println(str == str1); System.out.println(str == str2); System.out.println(str1 == str2); System.out.println(str.equals(str1)); System.out.println(str.equals(str2)); System.out.println(str1.equals(str2)); System.out.println(str == str.intern()); System.out.println(str1 == str1.intern());

System.out.println(str.intern() == str2.intern()); String hello = \ String hel = \ String lo = \

System.out.println(hello == \ System.out.println(hello == \ } }

参考答案:

false false false true true true false true

true true false

10. 编写程序,将字符串“aabbcdefg”中每个字符作加2操作,最后结果为“ccddefghi”。

参考答案:参考代码 public class Char {

public static void main(String[] args) { String s = \ char[] ch = s.toCharArray(); for (int i = 0; i < ch.length; i++) { ch[i] = (char) (ch[i] + 2); } ch.toString(); System.out.println(ch); } }

第5章

1. 编写一个程序,计算出前10个平方数(例如1,4,9,16),并将这10个数保存到一个整型数组中,将数组中的所有元素输出到控制台,验证程序是否正确。要确保数组有10个元素,并且元素值的范围是1~100. 参考答案:

public static void main(String[] args) { int b[] = new int[10]; for (int i=1; i < 11; i++) { b[i] = i * i;

}

for (int i = 0; i < 10; i++) { System.out.println(a[i]); } }

2. 声明一个数组,其中的元素为37,47,23,-5,19,56,然后创建一个新数组,将前一个数组的内容复制到后一个数组中。 参考答案:

public static void main(String[] args) { int a[] = {37,47,23,-5,19,56}; int b[] = new int[a.length]; for(int i = 0; i < a.length; i++){ b[i] = a[i]; }