数组的多问题

随机生成10个整数(1~100的范围)保存到数组
并倒序打印以及求平均值、求最大值和最大值的下标.
并查找里面是否有 8

拆解

这问题着实是有点多问……

稍微拆解下:

  1. 随机生成10个整数,范围在1到100
  2. 倒序打印
  3. 求平均值、求最大值和最大值的下标
  4. 查找里面是否有 8
  5. 隐藏条件:随机数不重复
public class the_h02 {
public static void main(String[] args) {
/*
1) 随机生成10个整数,范围1到100
2) 倒序打印
3) 求平均值、求最大值和最大值的下标
4) 查找里面是否有 8
*/
int ran_num = 10;
int[] arr = new int[10];
int index = 0;
while(true){
// 标志,当随机数出现重复时使用
boolean bnum = false;
// 生成随机数
int random_num = (int)(Math.random()*100+1);
// 检测随机数是否重复
for (int i = 0;i<ran_num ;i++ ) {
if (random_num==arr[i]) {
// 重复随机数时,将标志转为true
bnum = true;
}
}
// 标志成立时,跳过当前循环
if (bnum) {
continue;
}
// 标志不成立时,开始将随机数写入数组
arr[index] = random_num;
System.out.print(arr[index]+" ");
if (index==(arr.length-1)) {
break;
}
index++;
}
System.out.println("");
System.out.println("倒叙打印如下");

// 倒叙打印
for (int i=0;i<arr.length ;i++ ) {
System.out.print(arr[arr.length-1-i]+" ");
}

// 求平均值、求最大值和最大值的下标
// 平均值的前提是求和
// 求和数sum
int sum=0;
// 最大数及其下标
int max=0;
index=0;
for (int i=0;i<arr.length ;i++ ) {
sum+=arr[i];
if (arr[i]>max) {
max = arr[i];
index=i;
}
}
System.out.println("平均数:"+(sum/arr.length)+",最大数:"+max+",下标:"+index);

// 最后一个问题,解决读取8的问题。
// 读取的原理就是拆分。将数组的每个元素转换为字符串
// 并且拆分为char类型进行比较
// 一旦发现8,则打印信息并且跳过当前循环
for (int i = 0;i<arr.length;i++ ) {
String strs = arr[i]+"";
for (int j=0;j<strs.length() ;j++ ) {
if (strs.charAt(j)=='8') {
System.out.println("数组下标为"+i+"的数包含8!");
break;
}
}
}
}
}

"结果集"