对Java学科的考试进行一定的总结。
1.for循环和增强for循环遍历数组
增强for循环_手可摘☆辰的博客-CSDN博客https://blog.csdn.net/qq_48374573/article/details/117199933
public class Test {public static void main(String[] args) {int arr[]={1,3,5,7,9};int sum1=0;int sum2=0;//普通for循环for (int i = 0; i < arr.length; i++) {//累加求和sum1+=arr[i];}//增强型for循环for(int i:arr){//累加求和sum2+=i;}System.out.println("数组求和为:"+sum1);System.out.println("数组求和为:"+sum2);}
}
2.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
设小球的初始高度为h,当小球第1次落地时,共经过h米,反弹高度为h/2米
当小球第2次落地时,共经过(h+h/2+h/2)米,反弹高度为h/4米
当小球第3次落地时,共经过(h+h/2+h/2+h/4+h/4)米,反弹高度为h/8米依次类推就可以得到思路。
可以把小球第一次落地单独处理,然后就只需要循环(10-1)次,最后再额外反弹一次即可。
public class Test {public static void main(String[] args) {//类型肯定是浮点数,用整型直接就没了double bounce=100;//初始反弹高度double totalHeight=100;//第一次单独处理//题目问的是第10次落地时的情况for (int i = 2; i <= 10; i++) {bounce=bounce/2;//反弹高度减半totalHeight+=bounce*2;//一个往返}bounce/=2;//最后落地的时候还会反弹一次System.out.println("小球共经过"+totalHeight+"米");System.out.println("第10次反弹小球有"+bounce+"米");}
}
3.海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
这个题目假设原来有x个桃子,第一只猴子之后还剩下(x-1)*4/5个桃子,之后也是类似的思路,假设有个就是y=(x-1)*4/5,反解出x=5y/4+1,因为要保证每次都可以按照要求分配,也就是每次都需要是整除,这个时候求最后一次剩下多少桃子就可以求出海滩上原来最少有多少个桃子了。
public class Test {public static void main(String[] args) {int peach=4;//假设最后一次分配桃子的个数,根据公式x=5y/4+1,y每次需要时4的倍数while(true){int tmp=peach;//求桃子最开始的个数int count=1;//标记此时有几只猴子分配了//一共有五只猴子进行了分配,要保证每次都是可以按要求分配的for(int i=0;i<5;i++){//求上一次分配桃子的个数是否满足上上次分配的条件tmp=tmp*5/4+1;//满足要求if(tmp%4==0){count++;}else{//直接不合格了break;}}//要经历四次if(count==5) {System.out.println("海滩上原来最少有" + tmp + "个桃子");break;}peach+=4;//每次是按4的倍数增长}}
}
4.锯齿数组的遍历
二维数组中的每一个元素都是一个一维数组,这样就好理解了一点了。
public class Test3 {public static void main(String[] args) {int [][]arr={{1,2,3,4,5},{1,2,3,4},{1,2,3},{1,2},{1}};for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j]+" ");}System.out.println();}}
}
暂时写这么一点,有时间就更新一些题目了。