java寻找随机数列的最大最小值中int位置不一样运行结果不一样
如果把
int max = a[0][0],min=a[5][5];
int ki_max=2,ki_min=0,kj_max=2,kj_min=0;
放在int [][]a=new int[8][9];后面min输出数值和位置都是0; (1)
放在 for(int i=0;i<a.length;i++) { (2)
for(int j=0;j<a.length;j++) {
前面输出结果就是正确的
int的位置也会影响for语句的运行吗
下面是编程内容
int [][]a =new int[8][9];//给所有元素都赋值0 //(1)
for (int i=0; i < a.length; i++) {
for (int j=0; j<a.length; j++) {
a[i][j]=1+(int)(Math.round(99*Math.random()));
System.out.print(a[i][j]+"\t");}
System.out.println();} //输出8*9的1--100随机数
int max = a[0][0],min=a[1][1]; //就是这两句
int ki_max=2,ki_min=0,kj_max=2,kj_min=0;
for(int i=0;i<a.length;i++) { //(2)
for(int j=0;j<a.length;j++) {
if(max<=a[i][j]) {
max=a[i][j];ki_max=i+1;kj_max=j+1;
}
else
if(min>=a[i][j]){
min=a[i][j] ;
ki_min=i+1;
kj_min=j+1;
}
}
}
System.out.println("min="+min+"\t"+"它在第"+ki_min+"行,第"+kj_min+"个");
System.out.println("max="+max+"\t"+"它在第"+ki_max+"行,第"+kj_max+"个");
我简单改了一下,你的主要问题是a是在for循环里赋值的,赋值前全是0,int max = a[0][0],min=a[1][1]; 放前面那么min就等于0了,后续逻辑就不会再改变min的值了
还有一个小问题是j的取值上限应该是a[i].length
int[][] a = new int[8][9];
int ki_max = 2, ki_min = 0, kj_max = 2, kj_min = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = 1 + (int) (Math.round(99 * Math.random()));
System.out.print(a[i][j] + "\t");
}
System.out.println();
} // 输出8*9的1--100随机数
int max = a[0][0], min = a[1][1]; // 就是这两句
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if (max <= a[i][j]) {
max = a[i][j];
ki_max = i + 1;
kj_max = j + 1;
}
if (min >= a[i][j]) {
min = a[i][j];
ki_min = i + 1;
kj_min = j + 1;
}
}
}
System.out.println("min=" + min + "\t" + "它在第" + ki_min + "行,第" + kj_min + "个");
System.out.println("max=" + max + "\t" + "它在第" + ki_max + "行,第" + kj_max + "个");
int max = a[0][0],min=a[5][5];
int ki_max=2,ki_min=0,kj_max=2,kj_min=0;
的位置会影响for语句的运行的,因为执行逻辑会更改,放在for里面,每次循环就重新初始化一次