《java语言程序设计课后习题答案.doc》由会员分享,可在线阅读,更多相关《java语言程序设计课后习题答案.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、习题23使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。答:首先创建一个字符串变量有两种方式:String str = new String(abc);String str = abc;使用“= =”会因为创建的形式不同而产生不同的结果:String str1 = abc;String str2 = abc;System.out.println(str1= =str2); /trueString str1 = new String(abc);String str2 = abc;System.out.println(str1= =str2); /falseString str1
2、= new String(abc);String str2 = new String(abc);System.out.println(str1= =str2); /false因此自符串如果是对内容进行比较,使用equals方法比较可靠。String str1 = abc;String str2 = abc;System.out.println(str1= =str2); /trueString str1 = new String(abc);String str2 = abc;System.out.println(str1.equals(str2); /trueString str1 = new
3、 String(abc);String str2 = new String(abc);System.out.println(str1.equals(str2); /true5编写一个程序,把变量n的初始值设置为1678,然后利用除法运算和取余运算把变量的每位数字都提出来并打印,输出结果为:n=1678。n的每位数字是1,6,7,8。若n为任意值呢?法一:public class Exercise5 public static void main(String args) int n=1678; int unit; int decimal; int hundred; int thousand;
4、int count; thousand=n/1000; count=n%1000; hundred=count/100; count=count%100; decimal=count/10; count=count%10; unit=count; System.out.println(1678包含的数字分别是:+thousand+,+hundred+,+decimal+,+unit); /如果n为任意值import java.io.*;public class Exercise51 public static void main(String args) throws IOException
5、System.out.print(请输入一个整数:); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String input=bfReader.readLine(); int length=input.length()-1; int n=new Integer(input).intValue(); while(length=0) int divisor=(int) Math.pow(10,length); le
6、ngth=length-1; int output=n/divisor; n=n%divisor; System.out.print(output+,); 法二:(建议使用)public class Exercise5 public static void main(String args) int n=1678; int unit; int decimal; int hundred; int thousand; thousand=n/1000%10; hundred=n/100%10; decimal=n/10%10; unit=n%10; System.out.println(1678包含
7、的数字分别是:+thousand+,+hundred+,+decimal+,+unit); /如果n为任意值import java.io.*;public class Exercise51 public static void main(String args) throws IOException System.out.print(请输入一个整数:); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String
8、 input=bfReader.readLine(); int length=input.length()-1; int n=new Integer(input).intValue(); while(length=0) int divisor=(int) Math.pow(10,length); length=length-1; int output=n/divisor%10; System.out.print(output+,); 6.编写Java程序,接受用户输入的1-12之间的整数,若不符合条件则重新输入,利用switch语句输出对应月份的天数。import java.io.*;publ
9、ic class Exercise6 public static void main(String args) throws IOException int n; do System.out.print(请输入1-12之间的整数:); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String input=bfReader.readLine(); n=new Integer(input).intValue();
10、while(n12|n1); switch(n) case 2: System.out.println(n+月份29天);break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println(n+月份31天);break; case 4: case 6: case 9: case 11: System.out.println(n+月份30天);break; 7编写Java程序计算小于一个整数的全部素数并输出。import java.io.*;public class Exercise7 publi
11、c static void main(String args) throws IOException System.out.print(请输入一个整数:); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String input=bfReader.readLine(); int n=new Integer(input).intValue(); int i; System.out.println(2); for(i
12、=2;in;i+) for(int j=2;j=i/2+1;j+) if (i%j=0) break; if (j=i/2+1) System.out.println(i); 9编写Java程序实现:输入一组整数存放在数组中,比较并输出其中的最大值和最小值;在将数组元素从小到大排序并输出。import java.io.*;public class Exercise9 public static void main(String args) throws IOException final int N=5; int intArray=new intN; /数组的赋值 for(int i=0;iN
13、;i+) System.out.print(数组的第+i+个元素是:); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String input=bfReader.readLine(); int n=new Integer(input).intValue(); intArrayi=n; /求最大最小值 int max=intArray0; int min=intArray0; for(int j=0;jN;j+)
14、 if(maxintArrayj) min=intArrayj; System.out.println(最大值为:+max); System.out.println(最小值为:+min); /从小到大排序 int temp; for(int i=0;iN;i+) for(int j=i;jintArrayj) temp=intArrayi; intArrayi=intArrayj; intArrayj=temp; /将排序后的结果打印 System.out.println(排序后的数组为:); for(int i=0;iN;i+) System.out.print(intArrayi+,);
15、10编写一个方法来计算正方形的面积和周长。import java.io.*;public class Exercise10 System.out.print(“请输入正方形的边长:”) InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String input=bfReader.readLine(); int bianChang=Integer.parseInt(input);System.out.println(周
16、长为:+bianChang*4);System.out.println(面积为:+bianChang*bianChang);11.编写一个方法来计算1000以内的素数之和并输出。public class Exercise11 public static void main(String args) int sum=2; for(int i=2;i=100;i+) for(int j=2;j=i/2+1;j+) if(i%j=0) break; if(j=i/2+1) System.out.println(i); 12使用数组存储一个英文句子“Java is an object oriented
17、 programming language.”显示该句子,并算出每个单词的平均字母数。import java.io.*;public class Exercise12 public static void main(String args) String str=Java,is,an,object,oriented,programming,language; /打印句子 for(int i=0;istr.length;i+) System.out.print(stri+ ); System.out.println(); int length=0; double avr=0; for(int i
18、=0;istr.length;i+) length=length+stri.length(); avr=(double)length/str.length; System.out.println(平均数的大小为:+avr); 14定义一个4行4列的double型二维数组,并创建一个方法显示数组,计算任意给定的行,给定的列,主对角线和副对角线的和以及数组中的最大值。import java.io.*;public class Exercise14public static void main(String args) throws IOException double array= 2,4,5,7
19、, 6,3,5,7, 6,7,4,4, 2,2,3,3; /显示44的二维数组for(int i=0;i4;i+) for(int j=0;j4;j+) System.out.print(arrayij+ ); System.out.println();System.out.print(请输入选择的行(0-3):);InputStreamReader input=new InputStreamReader(System.in);BufferedReader reader=new BufferedReader(input);String row=reader.readLine();int iro
20、w=new Integer(row).intValue();System.out.println();System.out.print(请输入选择的列(0-3):);InputStreamReader input2=new InputStreamReader(System.in);BufferedReader reader2=new BufferedReader(input2);String line=reader2.readLine();int iline=new Integer(line).intValue();double sum=0;for(int i=0;i4;i+)sum=sum+
21、arrayirowi;for(int j=0;j4;j+)sum=sum+arrayjiline;/主对角线for(int i=0;i4;i+) for(int j=0;j4;j+) if(i=j) sum=sum+arrayij; /副对角线for(int i=0;i4;i+) for(int j=0;j4;j+) if(i=(3-j) sum=sum+arrayij; System.out.println(第+irow+行所有元素+与第+iline+列所有元素+加上主对角线和副对角线的和为:+sum);/求最大值double max=array00;for(int i=0;i4;i+) f
22、or(int j=0;jmax) max=arrayij; System.out.println(4*4数组的最大值+max); 15创建一个程序把输入字符串的大小互换。import java.io.*;public class Exercise15 public static void main(String args) throws IOException System.out.print(请输入字符串:); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new Bu
23、fferedReader(isStream); String input=bfReader.readLine(); char change=input.toCharArray(); for(int i=0;iinput.length();i+) if (Character.isUpperCase(changei) changei=Character.toLowerCase(changei); else changei=Character.toUpperCase(changei); System.out.print(转化后的字符串:); for(int i=0;iinput.length();i
24、+) System.out.print(changei); System.out.println(); 16用一段代码检测两个double型的数x和y是否相等。代码应能分辨这两个数是否是无穷大或NaN.如果它们相等,代码能正确显示这个数。public class Exercise16 public static void main(String args) double x=2.0/0.0; double y=0; if(x=Double.POSITIVE_INFINITY|y=Double.POSITIVE_INFINITY) System.out.println(x或y无穷大!); if(
25、Double.isInfinite(x)|Double.isInfinite(y) System.out.println(x或y无穷大!); /不要用/(x=Double.NaN|y=Double.NaN)/对于NaN的检测,不能使用Double的NaN/常量,而必须用Double.isNaN方法 if(Double.isNaN(x)|Double.isNaN(y) System.out.println(x或y非法!); 17.编写一个方法,把命令行输入的字符串转化为相应的int值。思考:如果字符串不能代表整数时该怎么办?import java.io.*;public class Exerci
26、se17 public static void main(String args) throws NumberFormatException int array=new intargs.length; for(int i=0;iargs.length;i+) try new Integer(argsi).intValue(); catch(Exception e) continue; arrayi=new Integer(argsi).intValue(); for(int i=0;iargs.length;i+) System.out.print(arrayi+*); 19创建一个有两个方法
27、的程序。标准的main()方法初始化两个变量,一个是String型,另一个是StringBuffer型,它们将作为第二个方法的输入参数,这个方法将把一个字符串连接在两个变量后面。public class Exercise19public static String connect(Stringstr,StringBuffer strBuf) String con=str+strBuf+123; return con;public static void main(String args) String str=this is a String! ; StringBuffer strBuf=ne
28、w StringBuffer(this is a StringBuffer! ); String con=connect(str,strBuf); System.out.println(连接后的字符串为:+con); 20创建一个简单的成绩单程序,帮助老师评估学生的表现。该程序用double数组存放成绩来计算平均成绩。/输入120个学生成绩,以“”号结束import java.io.*;public class Exercise20public static void main(String args) throws IOExceptionint i=0;double score=new do
29、uble20;String str=;doSystem.out.print(请输入第+i+个学生的成绩:);InputStreamReader input=new InputStreamReader(System.in);BufferedReader reader=new BufferedReader(input);str=reader.readLine();trydouble scoreTemp=new Double(str).doubleValue();scorei=scoreTemp;i+;catch(Exception e)continue; while(!str.equals(#);for(int j=0;ji;j+)System.out.print(scorej+/); double scoreSum=0;for(int j=0;ji;j+) scoreSum=scoreSum+scorej; System.out.println(输入的+i+个同学平均成绩是:+scoreSum/i);
限制150内