我的程序有问题。我想在每一列中打印最小值和最大值,但是无法正常工作。我认为一切都应该没问题。当循环结束时,我重新启动最小值和最大值。
public class tablice2 {
public static void main(String[] args){
int t [][] = new int [5][5];
int n [] = new int [5];
int x [] = new int [5];
Random r = new Random();
int min = t[0][0];
int max = t[0][0];
for (int i = 0; i <t.length ;i++){
min = 0;
max = 0;
for(int j = 0; j < t[i].length ;j++){
t[i][j] = r.nextInt(6)-5;
System.out.print(t[i][j] + " ");
if (t[j][i] < min){
min = t[j][i];
}
if (t[j][i] > max){
max = t[j][i];
}
}
n[i]=min;
x[i]=max;
System.out.println(" ");
}
for(int p=0;p<x.length;p++){
System.out.println("Max Column "+p + ": " +x[p] );
}
for(int k=0;k<n.length;k++){
System.out.println("Min Column "+k + ": " +n[k]);
}
}
}
您已将min
初始化为零,我建议Integer.MIN_VALUE
。否则,不能“找到”正值。
这也是某人已经为您解决的问题,例如通过流:
assertThat(
IntStream.of(new int[] { 1, 2, 3, 4, 5 }).max().getAsInt(),
is(5));
您的第一个循环必须在列(j)上。
t[0].length
我正在java中乞讨,所以当我从max = 0和min = 0切换到max = Integer.Min和min = Integer.Max时。一切都不会改变。
首先进入循环,将min
设置为min = Integer.MAX_VALUE
,并类似地使用max = Integer.MIN_VALUE
。这将为我们提供每个随机数(至少)小于初始化的最小值(与最大值相似)
在这种情况下,您所绘制的数字从-5到0,因此您可以将min设置为例如-6和max 1,然后确保所绘制的数字将大于-6且小于1,并且可以正确更新
在您的代码中,您混合了i
和j
-应该是
if (t[i][j] < min){
min = t[i][j];
}
以及其他类似的代码
另外,当您在Java中创建数组时,它会自动以0初始化。所以
int t [][] = new int [5][5];
int min = t[0][0];
表示min = 0
,因为所有数组都用0填充,因此您不必重复代码