Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否正确使用了Scanner和File类?_Java_File_Java.util.scanner - Fatal编程技术网

Java 我是否正确使用了Scanner和File类?

Java 我是否正确使用了Scanner和File类?,java,file,java.util.scanner,Java,File,Java.util.scanner,我正在使用java.util.Scanner和java.io.File创建一个接受用户输入模式的生活游戏程序 主要问题是我似乎无法让程序读取pattern.txt文件 我没有看到任何问题,编译时,pattern.txt与.java和.class文件位于同一文件夹中 我是否正确使用文件和扫描仪 我尝试对import语句进行重新排序,更改try和catch结构,并创建一个新的文件(//..Path/./pattern.txt),通过相对路径直接调用该文件 1.txt是模式文件: 20 20 0 0

我正在使用
java.util.Scanner
java.io.File
创建一个接受用户输入模式的生活游戏程序


主要问题是我似乎无法让程序读取
pattern.txt
文件

我没有看到任何问题,编译时,
pattern.txt
.java
.class
文件位于同一文件夹中

我是否正确使用
文件
扫描仪

我尝试对
import
语句进行重新排序,更改
try
catch
结构,并创建一个新的
文件(//..Path/./pattern.txt)
,通过相对路径直接调用该文件

1.txt
是模式文件:

20 20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
`

import java.util.Scanner;
导入java.io.File;
导入java.io.FileNotFoundException;
公共静态void main(字符串[]args)引发FileNotFoundException{
String inputFileName=“1.txt”;//直接设置相对路径
int[][]initStates=GetInitialState(inputFileName);
网格gd=新网格(初始状态);
gd.display();
gd.getStats();
gd.run();
}
公共静态int[]getInitialState(字符串文件名){
试一试{
文件=新文件(文件名);
//检查文件是否已创建
//if(file.exists())
//System.out.println(“文件存在”);
//否则
//System.out.println(“FILENOTFOUDN”);
扫描仪输入=新扫描仪(文件);//创建扫描仪以读取文件
int[][]状态=null;
int rows=input.nextInt();//从文本文件的第一个值获取行和列值
int cols=input.nextInt();
//states=newint[rows][cols];//创建带行和列的二维数组
状态=新整数[行][列];
//对于(int i=0;i
`

错误输出为FileNotFoundException打印堆栈跟踪:

java.io.FileNotFoundException: 1.txt (No such file or directory)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.util.Scanner.<init>(Scanner.java:639)
at client.getInitialStates(client.java:67)
at client.main(client.java:24)
Exception in thread "main" java.lang.NullPointerException
at Grid.<init>(Grid.java:14)
at client.main(client.java:26)
java.io.FileNotFoundException:1.txt(没有这样的文件或目录)
位于java.base/java.io.FileInputStream.open0(本机方法)
位于java.base/java.io.FileInputStream.open(FileInputStream.java:219)
位于java.base/java.io.FileInputStream。(FileInputStream.java:157)
位于java.base/java.util.Scanner(Scanner.java:639)
在client.getInitialState(client.java:67)
位于client.main(client.java:24)
线程“main”java.lang.NullPointerException中出现异常
在网格上。(Grid.java:14)
位于client.main(client.java:26)

我得到NullPointerException是因为getInitialStates()方法无法读取文件,所以没有返回2d数组。

如果根据注释抛出一个
FileNotFoundException
,这意味着程序的工作目录(即调用
java YourMainClassName
的目录)与您试图打开的文件的位置(按其名称)不同

您可以检查工作目录:

System.out.println("Working Directory = " + System.getProperty("user.dir"));

如回答中所述:

“主要问题是我似乎无法让程序读取pattern.txt文件…”-您是否获得了
FileNotFoundException
,或者无法读取文件以其他方式显示?是,它输出FileNotFoundException和堆栈跟踪,显示它在Scanner语句中导致错误。然后,您需要解决的第一个问题是
FileNotFoundException
。最好把它放在问题的前面和中心。使用
扫描仪
应该是次要的。太棒了!这很有帮助,IntelliJ似乎需要将.txt文件放在项目文件夹中,而不是src文件夹中。我想这是需要注意的。现在,该程序运行并且不会给出FileNotFoundException,尽管它不会打印网格。。我想我还有更多的调试要做。@Small_Kitten,还有签出运行配置设置。其中一个选项是更改工作目录。
System.out.println("Working Directory = " + System.getProperty("user.dir"));