有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个文本文档,其中包含一个带有这些值的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) 个答案

  1. # 1 楼答案

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

    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;
            }
        }
    }
    
  2. # 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];
    
                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();
            }
    
  3. # 3 楼答案

    使用@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();
    
  4. # 4 楼答案

    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();
    }