在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有多么有用:)