在2d数组中打印最大数字 – 为什么我的代码打印三个数字

我试图打印出2D数组中最大的数字。 我的问题是我的输出是三个数而不是一个 – 最大的。 为什么?

这是我的代码:

public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { int maxRows = 3; int maxCols = 4; int [] onedArray = new int [maxRows]; for (int i = 0; i < maxRows; i++){ onedArray[i] = (int) ((Math.random() * 100) * maxCols); } int [][] twodArray = new int[maxRows][]; for (int i = 0; i < maxRows; i++){ twodArray[i] = new int[maxCols]; } for (int i = 0; i < twodArray.length; i++){ for (int j = 0; j < twodArray[i].length; j++){ twodArray[i][j] = (int) (Math.random() * 100); } } System.out.println("2 - The 2D array: "); for (int i = 0; i < twodArray.length; i++){ for (int j = 0; j < twodArray[i].length; j++){ System.out.print(twodArray[i][j] + " "); } System.out.println(""); } int maxValue = 1; System.out.println("\nMax values in 2D array: "); for (int i = 0; i < twodArray.length; i++) { for (int j = 0; j  maxValue) { maxValue = twodArray[i][j]; } System.out.println(maxValue); } } 

}

直到最后一个指令序列的所有内容都是正确的(尽管格式不正确)。

这是原创的:

 int maxValue = 1; System.out.println("\nMax values in 2D array: "); for (int i = 0; i < twodArray.length; i++) { for (int j = 0; j < twodArray.length; j++) if (twodArray[i][j] > maxValue) { maxValue = twodArray[i][j]; } System.out.println(maxValue); } 

这是更好的版本:

 int maxValue = 0; System.out.println("\nMax values in 2D array: "); for (int i = 0; i < twodArray.length; i++) { for (int j = 0; j < twodArray[i].length; j++) { if (twodArray[i][j] > maxValue) { maxValue = twodArray[i][j]; } } System.out.println("Max value of row " + i + ": " + maxValue); } 

仔细看,你会看到我在第二个for循环之后添加了{字符。

如果你想找到总的最大值,并且最小化打开和关闭花括号,这是另一个版本:

 int maxValue = 0; System.out.println("\nMax values in 2D array: "); for (int i = 0; i < twodArray.length; i++) for (int j = 0; j < twodArray[i].length; j++) if (twodArray[i][j] > maxValue) maxValue = twodArray[i][j]; System.out.println("Maximum value: " + maxValue); 

祝你好运。

  int m,n,max; int a[][]=new int[10][10]; Scanner S=new Scanner(System.in); System.out.println("Enter m*n matrix"); m=S.nextInt(); n=S.nextInt(); for(int i=0;imax) { max=a[i][j]; } } } System.out.println(max); 

你的行System.out.println(maxValue); 需要摆脱变量i的循环。 它被打印3次因为它在这个循环中。

如果您的代码缩进正确,这将更容易看到; 无论如何,这是一个很好的习惯。

一旦它正确缩进,答案就在你的代码中:

 for (int i = 0; i < twodArray.length; i++) { for (int j = 0; j < twodArray.length; j++) if (twodArray[i][j] > maxValue) { maxValue = twodArray[i][j]; } System.out.println(maxValue); } } 

不要低估良好的缩进对于捕获这种bug有多么有用:)