这么是我在对数组学习完之后,练习三天都重复练习的数组编程题目,有写注释,同时也会在下面分析一些重做还是出错的情况,很垃圾,大家一起努力:
目录如下:
数组求和
int [] number ={62,64,88,54,95};
int sum = 0;
//挨个访问数组,以此叠加
for (int i = 0; i < number.length; i++) {
// int length = number[i];
sum +=number[i];
}
System.out.println(sum);
数组求最值
int [] score = {92,98,91,94};
int j =1; //j=i+1;
// int maxscore=0;
//三元运算符的赋值,真,则前,是score[i];假,后,则score[j]
// for (int i = 0; i < score.length; i++) { //score.lemgth=4,i(max)=3,
// maxscore =score[i]>score[j]?score[i]:score[j];
// j +=1;
// }
// System.out.println(maxscore);
第二种方法
int max = score[0];
//for运行,进行多次比较,同时将大数重新赋值给max;
for (int i = 1; i < score.length; i++) {
if (score[i]>max){
max = score[i];
}
}
System.out.println(max);
自动生成数组
Random r = new Random();
int [] maxscore = {10};
//完成自动生成数组
for (int i = 0;i<5;i++){
int score = r.nextInt(5)+80;
maxscore[i] = score;
}
猜数字游戏
// 猜中提示“运气不错,猜中了”并输出第一次猜中的位置。同时告知其它五个数
//分析:随机五个数---使用动态数组;死循环--进行不断猜测
Random ra = new Random();
Scanner sc = new Scanner(System.in);
int [] array = new int [5];
for (int i= 0;i<=4;i++){
int j = ra.nextInt(20)+1;
array [i] = j;
}
while (true){
System.out.println("请输入你猜的数字");
int guess = sc.nextInt();
for (int i = 0; i < array.length; i++) {
if(guess==array[i]){
System.out.println("恭喜你才对了");
break;
}
else {
System.out.println("抱歉。不对噢");
break;
}
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+"\t");
}
}
随机排名
这是定义一个动态数组的时候,在随机变量中,变量出现重复值的情况被忽略;
int [] data = new int [5];
//生成数组
for (int i =0 ;i<data.length;i++){
System.out.println("请输入第:"+(i+1)+"成员的学号");
int name = sc.nextInt();
data[i] = name;
}
Random ra = new Random();
// 测试数组
// for (int i = 0; i < data.length; i++) {
// System.out.print(data[i]+"\t");
// }
//交换值
for (int i=0;i<data.length;i++){
int nums = ra.nextInt(data.length);
int temp = data[i];
data[i]=data[numer];
data[numer]= temp;
}
for (int i = 0; i < data.length; i++) {
System.out.print(data[i]+"\t");
}
错误1
描述:这是我熟练之后的又一次复习练习,原本的错误结果是这个样子:1,2的代码是我用来检擦的,A部分代码是出错的地方。
对数组中的元素换位置的三行代码,不小心就打错了。可敲错导致功能不一样,我开始以为跟静态和动态数组有关,然后开始对比两种数组的代码执行循序(这个地方有点折磨,先用大脑捋一下,捋不清就用笔画出来,化完发现差不多呀,最后才想到我可以用输出语句来检擦一些值得变化嘛)最后才发现是变化原因背后的逻辑,才意识到是自己敲错了代码。真的是,花了30多分钟。菜是原罪呀!
冒泡排序
for(int i =0;i< score.length-1;i++){
//定义一个循环,控制每次循环中对比的次数。
//j等于最大值时,j+1超出length范围==score,length-1-i控制j最大值是max-1;也就是比较的次数
for(int j =0;j< score.length-1-i;j++){
//换位置
if(score[j]> score[j+1]){
int temp = score[j];
score[j]= score[j+1];
score[j+1]=temp;
}
}
}
for (int i = 0; i < score.length; i++) {
System.out.print(score[i]+"\t");
}
错误分享:
Index 5 out of bounds for length 5,最后的值超出了5
这是将j和i的大小比较一下的原因,哎,第一次出现这个错误的时候,我还用了英语字典,不知道几个单词意思,尴尬。
总结
因为是练习了好几次,所以一些常见的小错误就不记得了,就只记得在数组边界问题上,犯了不是一次错误。总是在思考如何敲的时候,对这个点总是忽略,哎!菜是原罪。