如何从文件中读取 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);
}
}
我正在创建网格,所以首先我必须输入网格的大小,例如 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);
}
}