Java面向对象程序设计
实验五 流程控制(二)
学号: 姓名: 学院: 专业班级: 指导老师:林志伟
计算机与信息学院
2 015.11.12
1.不能正常运行,因为静态方法无法直接调用非静态方法。
将multiply这个方法修饰成静态方法时即可运行,运行结果为2*3*4*5 = 120;
修改后的代码如下: classTestApp{
publicstatic voidmain(String[]args){
System.out.println(multiply(2,3,4,5)); }
publicstatic intmultiply(int...nums){//变长参数
intresult= 1; for(intx:nums)
result*=x; returnresult; } }
2 .程序编译及测试结果如下:
代码如下: classTestArgs{
staticintupperCount=0,lowerCount=0,numberCount=0,spaceCount=
0 ,otherCount= 0;
//统计字符
static voidcountChar(charch){
if(ch>='A'&&ch<='Z')
upperCount++;
elseif(ch>='a'&&ch<='z')
lowerCount++;
elseif(ch>='0'&&ch<='9')
numberCount++; elseif(ch=='')
spaceCount++; else
otherCount++;
}
publicstatic voidmain(String[]args){
java.util.Scannerscan=new java.util.Scanner(System.in);
Stringstr=scan.nextLine();
//遍历str
for(inti= 0; i if(i!=str.length()-1&&str.charAt(i)=='\\\\'&&str.charAt(i+1) = = 'n') break; countChar(str.charAt(i)); } System.out.println(\大写字母个数:\ System.out.println(\小写字母个数:\System.out.println(\数字个数:\System.out.println(\空格个数:\System.out.println(\其它字符个数:\} } 3. 查阅api 文档: publicintnextInt(intbound)Returnsapseudorandom,uniformlydistributedintvalue between0(inclusive)andthespecifiedvalue(exclusive),drawnfromthisrandomnumber generator'ssequence.ThegeneralcontractofnextIntisthatoneintvalueinthespecifiedrangeis pseudorandomlygeneratedandreturned.Allboundpossibleintvaluesareproducedwith ( approximately)equalprobability.ThemethodnextInt(intbound)isimplementedbyclass Randomasifby: publicintnextInt(intbound){ if(bound<= 0) thrownewIllegalArgumentException(\if((bound&-bound)==bound)//i.e.,boundisapowerof2 return(int)((bound*(long)next(31)) >>31); intbits,val; do{ bits=next(31); val =bits%bound; } while (bits- val+(bound-1)<0); returnval; } 可知,传入nextInt(intbound)的参数必须为正整数,否则将会抛出异常 。 “IllegalArgumentException” 且要获取1~6的随机数,需传入参数6,并将得到的随机数+1 程序源代码如下: classTestRandom{ publicstaticvoidmain(String[]args){ java.util.Randomrand= newjava.util.Random(); intnum1=rand.nextInt(6) +1; intnum2=rand.nextInt(6) +1; intnum3=rand.nextInt(6) +1; if(num1==num2&&num2==num3&&num1== 6) System.out.println(\赢20元!\else if(num1==num2&&num2==num3) System.out.println(\赢10元!\ else if(num1==num2||num2==num3||num1==num3) System.out.println(\赢5元!\else System.out.println(\,没有赢钱!\} } 4.(1)计算xn ( 2)返回16.0 第一次调用时,x= 4,n= 2; n%2==0,进行第二次调用,x= 16,n= 1; 第二次调用中,n%2!= 0,进行第三次调用,x= 256,n= 0; 第三次调用中,n==0,第三次调用的返回值为1.0; 第二次调用的返回值为1.0*16= 16.0; 第一次调用的返回值为16.0; 5.(1)返回值为1 调用P,n= 9;调用Q,m= 9,返回1,;P返回1。 ( 2)返回值为2