您好,欢迎访问三七文档
实验07:流程控制(二)实验目的:1.进一步巩固对分支、循环结构的掌握,并简单了解有关方法的使用实验数据记录及分析(或程序及运行结果)1.分析程序classTestApp{publicstaticvoidmain(String[]args){System.out.println(multiply(2,3,4,5));}publicintmultiply(int…nums){//变长参数intresult=1;for(intx:nums)result*=x;returnresult;}}能否正常运行?原因是什么?答:不能正常运行。因为主方法是静态的,不能调用非静态的成员方法。将multiply方法改成静态的,即填加static。2.编写程序,接受命令行传入的的一个参数,能够统计其中大写字母、小写字母、数字、空格及其他字符的个数,并且分别输出统计数据,如果碰到了”\n”则终止统计。提示:1)声明并出初始化一个字符串变量:如Strings=”hello\nMike”;2)s.charAt(0)表示取该字符串的第1个字符h;s.charAt(1)取第2个字符e,其他依次类推;3)s.length()返回该字符串的字符个数,如”hello”的字符个数是5。importjava.util.Random;publicclassApp{publicstaticvoidmain(String[]args){Strings=HelloWorld;intb=0,sm=0,v=0,n=0,m=0;for(inti=0;is.length();i++){if(s.charAt(i)=='\n')break;else{if(('A'=s.charAt(i))&&(s.charAt(i)='Z'))b++;elseif(('a'=s.charAt(i))&&(s.charAt(i)='z'))sm++;elseif(('0'=s.charAt(i))&&(s.charAt(i)='9'))v++;elseif(s.charAt(i)=='')n++;elsem++;}}System.out.println(大写字母有+b+个。);System.out.println(小写字母有+sm+个。);System.out.println(数字有+v+个。);System.out.println(空格有+n+个。);System.out.println(其它字符有+m+个。);}}3.利用java.util.Random类,编写一个程序,每次执行时生成一个1~6之间(含1和6)的整数。Random类的用法如下面代码段所示。Ramdomrand=newRandom();//第一步要创建一个随机数生成对象intx=rand.nextInt(5)+1;//第二步rand.nextInt(5)生成一个0到5之间的数字,然后简单加1,调整到1到6之间,以满足需要publicclassJavaApp{publicstaticvoidmain(String[]args){Randomrand=newRandom();//第一步要创建一个随机数生成对象intx=rand.nextInt(5)+1;System.out.println(1-6之间的随机数是:+x);}}4.利用java.util.Random类,编写一个程序,每次执行时生成一个1~6之间(含1和6)的整数。Random类的用法如下面代码段所示。Ramdomrand=newRandom();//第一步要创建一个随机数生成对象intx=rand.nextInt(5)+1;//第二步rand.nextInt(5)生成一个0到5之间的数字,然后简单加1,调整到1到6之间,以满足需要。写一个程序,使用上述随机数生成方法模拟掷筛子(Dice)。一个人每次掷3个筛子,根据下面的规则来显示获胜的奖金情况。如果3个筛子都是6,赢20元;如果3个筛子都相同,赢10元;如果3个筛子中有任何两个都相同,赢5元。importjava.util.Random;publicclassJavaApplication{publicstaticvoidmain(String[]args){Randomrand=newRandom();//第一步要创建一个随机数生成对象intx=rand.nextInt(5)+1;inty=rand.nextInt(5)+1;intz=rand.nextInt(5)+1;System.out.println(x=+x);System.out.println(y=+y);System.out.println(z=+z);if((x==6)&&(y==6)&&(z==6))System.out.println(赢20元);elseif((x==y)&&(y==z))System.out.println(赢10元);elseif((x==y)||(x==z)||(y==z))System.out.println(赢5元);elseSystem.out.println();}}5.分析程序publicstaticdoublepower(doublex,intn){if(n==0)return1.0;elseif(n%2==0)returnpower(x*x,n/2);elsereturnpower(x*x,n/2)*x;}1)程序的功能是:答:递归调用方法本身2)当x=4,n=2时,调用power方法返回值是什么?写出每次的调用过程returnpower(16,1);继续returnpower(256,0)*16;继续return1.0。6.分析下面的两段程序publicstaticintP(intn){returnQ(n=0?n:-n);}privatestaticintQ(intm){finalintBASE=10;return(mBASE?1:1+Q(m/BASE));}例如:当n=5时,调用方法p返回值是多少?写出执行过程。Step1:n=5,p(5)=Q(5);Q(5)=11)当n=9时,调用方法p返回值是多少?写出执行过程。n=9,p(9)=Q(9);Q(9)=12)当n=10时,调用方法p返回值是多少?写出执行过程。n=10,p(10)=Q(10);Q(10)=1+Q(1)=23)当n=123时,调用方法p返回值是多少?写出执行过程。n=123,p(123)=Q(123);Q(123)=1+Q(12)=1+1+Q(1)=34)总结P方法的功能是什么?递归调用其他方法5)修改方法P,完成同样功能,达到不调用其它函数包括递归调用自己。importjava.util.Scanner;publicclassJavaApplication{publicstaticvoidmain(String[]args){System.out.println(请输入n的值:);Scannerreader=newScanner(System.in);intn=reader.nextInt();n=n=0?n:-n;if((n=0)&&(n10))System.out.println(p=1);elseif(n=10&&n100)System.out.println(p=2);elseif(n=100&&n1000)System.out.println(p=3);elseSystem.out.println(p=1);reader.close();}}评语:日期:年月日
本文标题:java-实验七
链接地址:https://www.777doc.com/doc-4882497 .html