从文本文件中读取内容并将其存储到数组中

时间:2015-10-06 23:18:45

标签: java arrays loops text

我有一个文本文档,其中包含带有这些值的5x5表

5   5
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)并告诉最低值的位置(第1行第2列)。

public static void main(String[] args)
{
    Scanner input;
    File fileIn = new File("src/array2d/array2dtest1.txt");
    System.out.println(fileIn.getAbsolutePath());

    int[][] array = new int[5][5];
    for(int row = 0;row<array.length;row++) {int[] column = array[row];
    {
        for(int columnIndex = 0; columnIndex<column.length; columnIndex++);
    }


    }
    try
    {

        input = new Scanner(fileIn);
    }
    catch (FileNotFoundException e)
    {

        System.out.println(fileIn.getName() + " is not found.");
        return;
    }
    input.close();
}

}

4 个答案:

答案 0 :(得分:0)

此代码实际上将您的输入存储到数组中。

public static void main(String[] args) {  
            Scanner input;
            File fileIn = new File("src/array2d/array2dtest1.txt");
            System.out.println(fileIn.getAbsolutePath());

            int[][] array = new int[5][5];

            try
            {

                input = new Scanner(fileIn);
                String values = input.nextLine();
                String[] value = values.split("\\s+");
                int index = 0;
                for(int row = 0;row < 5;row++) 
                {   index = row;
                    for(int col = 0 ; col < 5; col++){
                            array[row][col] = Integer.parseInt(value[index*5 + col]);
                    } 
                }
            }
            catch (FileNotFoundException e)
            {

                System.out.println(fileIn.getName() + " is not found.");
                return;
            }
            input.close();
        }

答案 1 :(得分:0)

使用来自@ vikasn91的答案,我编辑了一下以正确地将值分配给数组,找到数组中的最小数字及其位置:

    try {

        input = new Scanner(fileIn);
        int lowestCol = 0;
        int lowestRow = 0;
        int lowest = 0;

        for (int row = 0; row < 5; row++) {
            String values = input.nextLine();
            String[] value = values.split("\\s+");
            for (int col = 0; col < 5; col++) {
                array[row][col] = Integer.parseInt(value[col]);

                if (row == 0 && col == 0) {
                    lowest = array[row][col];
                } else if (array[row][col] < lowest) {
                    lowestCol = col;
                    lowestRow = row;
                    lowest = array[lowestRow][lowestCol];
                }
            }
        }

        System.out.println("Lowest number: " + lowest);
        System.out.println("Found in row: " + lowestRow + ", col: " + lowestCol);
    } catch (FileNotFoundException e) {

        System.out.println(fileIn.getName() + " is not found.");
        return;
    }
    input.close();

答案 2 :(得分:0)

public static void main(String[] args)
{
    Scanner input;
    File fileIn = new File("array2dtest1.txt");
    System.out.println(fileIn.getAbsolutePath());
    try
    {
        input = new Scanner(fileIn);
        int row = input.nextInt();
        int column = input.nextInt();
        int min = Integer.MAX_VALUE;
        int val;
        int minR=0,minC=0;

        for(int i=0;i<row;i++){
            for(int j=0;j<column;j++){
                val = input.nextInt();
                if(val<min){
                    min = val;
                    minR = i;
                    minC = j;
                }
            }
        }
        System.out.println("Min Value is " + min + "\nat position (" + minR + "," + minC + ")" );
    }
    catch (FileNotFoundException e)
    {
        System.out.println(fileIn.getName() + " is not found.");
        return;
    }
    input.close();
}

答案 3 :(得分:0)

如果您正在使用扫描仪,则无需直接拆分或解析整数。默认分隔符是空格。

Scanner s = new Scanner(new FileReader("src/array2d/array2dtest1.txt"));
int numRows = s.nextInt();
int numCols = s.nextInt();
int[][] array = new int[numRows][numCols];
int least = Integer.MAX_VALUE;
int leastRow = -1;
int leastCol = -1;
for(int r = 0; r < numRows; r++) {
    for(int c = 0; c < numCols; c++) {
        if((array[r][c] = s.nextInt()) < least) {
            leastRow = r;
            leastCol = c;
        }
    }
}