如何从文件中读取 java

How to read from the file java

我正在创建网格,所以首先我必须输入网格的大小,例如 4,然后输入网格

0 0 0 1
1 2 3 0
2 2 0 2
3 3 1 0

但是,我想从文件中读取网格。 例如,java 测试 4 < file.txt

有什么建议吗?

import java.util.Scanner;

public class test {

public static void main(String[] args) { 
    Scanner scn = new Scanner(System.in);
    int n = scn.nextInt(); 
    int[][] grid = new int[n][n]; 
    for (int i = 0; i < n; i++) { 
        for (int j = 0; j < n; j++) {
            grid[i][j] = scn.nextInt();
        }
    }
    int[][] dp = new int[n][n]; 
    for (int j = 0; j < n; j++) {
        dp[n - 1][j] = grid[n - 1][j];
    }
    for (int i = n - 2; i >= 0; i--) {
        for (int j = 0; j < n; j++) {
            if (j - 1 >= 0 && j + 1 < n) { 
                dp[i][j] = Math.max(dp[i + 1][j + 1], dp[i + 1][j - 1]) + grid[i][j];
            } else if (j - 1 >= 0 && j + 1 >= n) { 
                dp[i][j] = dp[i + 1][j - 1] + grid[i][j];
            } else { 
                dp[i][j] = dp[i + 1][j + 1] + grid[i][j];
            }
        }
    }
    int ans = 0; 
    for (int j = 0; j < n; j++) {
        ans = Math.max(ans, dp[0][j]); 
    }
    System.out.println(ans);
  }
}

为了从文件中读取,您需要有完整的路径(它所在的位置)以便您可以读取它。假设它来自目录作为 jar,使用可以使用下面的代码片段:

public static void main(String[] args) { 
    try {
     Scanner scn = new Scanner(System.in);
     int n = scn.nextInt();
     String fileName = scn.nextLine();
     File file= new File(fileName);
     Scanner fileReader = new Scanner(file);
     while(fileReader.hasNextLine()){
      int[][] grid = new int[n][n]; 
      for (int i = 0; i < n; i++) { 
          for (int j = 0; j < n; j++) {
              grid[i][j] = scn.nextInt();
          }
      }
     }
     //Remaining operation as in your code
   } catch (Exception e) {
      System.out.printlin("Exception occurred while processing: " + e);
   }
  }
}

注意:可以用类似的东西,我目前没有带编辑器,因此对任何错误表示歉意

试试这个

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class test {

    public static void main(String[] args) throws FileNotFoundException {
        int n = Integer.parseInt(args[0]);
        int[][] grid = new int[n][n];
        File myObj = new File(args[2]);
        Scanner myReader = new Scanner(myObj);
        for (int i = 0; i < n; i++) {
            String[] strs = myReader.nextLine().split(" ");
            for (int j = 0; j < n; j++) {
                grid[i][j] = Integer.parseInt(strs[j]);
            }
        }
        int[][] dp = new int[n][n];
        for (int j = 0; j < n; j++) {
            dp[n - 1][j] = grid[n - 1][j];
        }
        for (int i = n - 2; i >= 0; i--) {
            for (int j = 0; j < n; j++) {
                if (j - 1 >= 0 && j + 1 < n) {
                    dp[i][j] = Math.max(dp[i + 1][j + 1], dp[i + 1][j - 1]) + grid[i][j];
                } else if (j - 1 >= 0 && j + 1 >= n) {
                    dp[i][j] = dp[i + 1][j - 1] + grid[i][j];
                } else {
                    dp[i][j] = dp[i + 1][j + 1] + grid[i][j];
                }
            }
        }
        int ans = 0;
        for (int j = 0; j < n; j++) {
            ans = Math.max(ans, dp[0][j]);
        }
        System.out.println(ans);
    }
}