【问题标题】:How would i find the position of this array index and also the minimum?我如何找到这个数组索引的位置以及最小值?
【发布时间】:2016-01-04 03:29:52
【问题描述】:

如何通过添加数组的最小值以及最小值的位置来完成这个程序?

public static void main(String[] args) {
    Scanner input;
    /* A file for the program to open, the absolute location is based on 
     * the location of the project.  /src/array2d/ locates the file in 
     * the current source folder 
     */

    File fileIn = new File("src/array2d/array2dtest1.txt");
    // You can fetch the full absolute path with the method below
    // System.out.println(fileIn.getAbsolutePath());

    /* try...catch is necessary for reading files, as it is possible that
     * the file does not exist.
     */

    try {
        //creating a scanner from the file, rather than using console.
        input = new Scanner(fileIn);
    }
    catch (FileNotFoundException e) {
        // if file is not found, terminate the program
        System.out.println(fileIn.getName() + " is not found.");
        return;
    }

    int row = input.nextInt();
    int column = input.nextInt();
    int [][] arr = new int[row][column];
    int [] min = arr[0];

    for (int i = 0; i < row; i++) {
        for (int j = 0; j < column; j++) {
            arr[i][j] = input.nextInt();
        }
    }

    for (int i = 0; i < row; i++) {
        for (int j = 0; j < column; j++) {
            int k;
            k = arr[i][j];
            System.out.printf("     %3d", k );
        }
        System.out.println();
    }
    input.close();
    //min
    int i;
    for(i = 1; i < arr.length; i++) {
        if(i == 1)
        min = arr[i];
    }
    System.out.printf("         min: " + min);
}

输出应该是:

39  95  99  56  41
88  8   1   48  75
3   58  13  54  80
92  72  74  25  86
30  38  3   21  2

最小值是1,它的位置是(无论位置是什么)

【问题讨论】:

  • 你的问题和代码不清楚。你能添加输入文件包含的数据吗?

标签: java arrays indexing minimum


【解决方案1】:

这里有一个新的min 循环供您使用,填充在行和列的循环中,还为您的字符串提供了一些更好的格式样式:)

    int min = 0; /* set initial minimum */
    int minRowPos = 0; /* set minimum row and column positions */
    int minColPos = 0;
    for(int i = 0; i < row; i++)
    {
        for(int j = 0; j < column; j++)
        {
            int k;
            k = arr[i][j];
            System.out.printf("     %3d", k );
            if(min < arr[i][j]){ /* test and set new min across arr */
                min = arr[i][j];
                minRowPos = i; /* set row position of new minimum */
                minColPos = j; /* set col position of new minimum */
            }
        }
        System.out.println();
        System.out.printf("Array min: %d at row, column: %d,%d ", min, minRowPos, minColPos);

    }
    input.close();

另外,删除您在顶部的min 声明

int [] min = arr[0];

如果你愿意,你可以更简洁,将所有声明移到类的顶部,但我不想再把事情弄得乱七八糟,只做一小部分改动。

【讨论】:

  • 我遇到了一个错误。它说 if(min
  • 如果您对它解决了您的问题感到满意,请将答案标记为完成以清除它并帮助其他人找到答案。
【解决方案2】:

首先,您的代码 int [] min = arr[0]; 应该会给您一个错误,因为您不能有一个 int[ ] 类型的引用变量对 int 的引用。

现在来回答:

<java>
int minimum = arr[0];
int minimum_index = 0
for(int i = 1;i<arr.length;i++){
     if(arr[i]<minimum){      // Found an array element lesser than previously recorded minimum
         minimum = arr[i];   //update the recorded minimum
         minimum_index = i;  // update the recorded minimum index
      }
 }
 System.out.printf("Array minimum %d found at %d",minimum,minimum_index);

【讨论】:

    【解决方案3】:
    //min
    int i;
    int pos;
    for(i = 1; i < arr.length; i++) {
      if(i == 1)
        min = arr[i];
      pos = i;
    }
    System.out.printf("         min: " + min + " position " + pos );
    

    【讨论】:

      猜你喜欢
      • 2016-02-24
      • 2012-05-13
      • 2013-04-06
      • 2019-08-21
      • 2021-03-17
      • 2018-01-29
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      相关资源
      最近更新 更多