数组中最大数字的位置

时间:2015-09-18 19:57:01

标签: java arrays numbers 2d

我的程序应该提示用户输入数组中的行数和列数,然后输入数组。然后计算并显示数组中最大元素的位置。

我的代码一直显示(0,1)而不是实际结果,(1,2)。有什么想法吗?

我的代码:

import java.util.Scanner;

public class Question8_13 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the number of rows and columns in the array: ");
        int row = input.nextInt();
        int col = input.nextInt();
        System.out.println("Enter numbers into array: ");
        double[][] a = new double[row][col];
        for (double[] a1 : a) {
            for (int j = 0; j < a1.length; j++) {
                a1[j] = input.nextDouble();
            }
        }
        int[] largest = locateLargest(a);
        System.out.println("The location of the largest element is at: (" +  largest[0] + "," + largest[1] + ")");
        for (int i = 0; i < 2; i++) {
            System.out.print(largest[i]);
        }
    }

    public static int[] locateLargest(double[][] a) {
        double max = 0;
        int maxRow = 0;
        int maxColumn = 0;
        int row = 0;
        for (int column = 0; column < a[row].length; column++) {
            if (a[row][column] > max) {
                max = a[row][column];
                maxRow = row;
                maxColumn = column;
            }
        }
        int[] largest = new int[2];
        largest[0] = maxRow;
        largest[1] = maxColumn;
        return largest;
    }
}

结果:

Enter the number of rows and columns in the array: 3 4

Enter numbers into array: 

23.5 35 2 10

4.5 3 45 3.5

35 44 5.5 9.6

The location of the largest element is at: (0,1)

修改

我有:

for(int row = 0; row&lt; a [0] .length; row ++){

在第32行,但这个错误不断出现:

“线程中的异常”主“java.lang.ArrayIndexOutOfBoundsException:3

at Question8_13.locateLargest(Question8_13.java:33)

at Question8_13.main(Question8_13.java:21)

Java结果:1“

我能让程序实际运行的唯一方法就是只检查row = 0

2 个答案:

答案 0 :(得分:2)

在你的循环中:

for (int row = 0; row < a[0].length; row++)

行数是a.length,而不是[0] .length。 a [0] .length是第一行中的列数。

答案 1 :(得分:1)

用以下内容替换你的for循环:

for (int i = 0; i < a.length; i++) {
     for (int j = 0; j < a[i].length; j++) {
         if (a[i][j] > max) {
             max = a[i][j];
             maxRow = i;
             maxColumn = j;
         }
     }
 }

你只是检查第一行。现在,您将遍历每一行的每列。