我正在尝试读取文本文件并创建数组。使用文件的前2个值设置数组,这些值出现在第一行。然后将文件中的所有剩余项添加到数组中。由于某种原因,我的数组也总是为空。需要做哪些修正才能使其正常运行?
public static Grid createGrid(String filename) throws IOException {
BufferedReader input;
String inputLine;
char[][] grid;
Grid currentGrid;
int currentLine = 0;
try{
input = new BufferedReader(new FileReader(filename));
inputLine = input.readLine();
String[] tokens = inputLine.split(" ");
if(tokens.length != 2){
throw new IllegalArgumentException();
}
int height = Integer.parseInt(tokens[0]);
int width = Integer.parseInt(tokens[1]);
grid = new char[height][width];
while(inputLine != null){ // Giving me (Condition 'inputLine != null' is always 'true') in ide
System.out.println(inputLine);
inputLine = input.readLine();
for(int i = 0; i < inputLine.length() - 1; i++){
char currentGem = inputLine.charAt(i);
grid[currentLine][i] = currentGem;
}
currentLine++;
}
input.close();
currentGrid = new Grid(grid);
}
catch(IOException e){
System.out.println(e.getMessage());
currentGrid = null;
}
return currentGrid; // Giving me (Value 'currentGrid' is always 'null') in ide
}
在您的代码中...
while(inputLine!=null)
...将始终为true
,因为inputline
是您的字符串
并且在运行此检查时它将始终具有值。原因是,一旦您将null
读取到inputline
中(当您到达文件末尾时),而不是运行循环检查,您将在尝试运行下一行代码时抛出nullPointerException
...用于(int i=0;i
currentgrid
始终为
null
,因为在这一点上它仍然声明为
null
。
public static Grid createGrid(String filename) throws IOException {
Grid currentGrid = null;
try {
BufferedReader input = new BufferedReader(new FileReader(filename));
String inputLine = input.readLine();
String[] tokens = inputLine.split(" ");
if(tokens.length != 2){
throw new IllegalArgumentException();
}
int height = Integer.parseInt(tokens[0]);
int width = Integer.parseInt(tokens[1]);
char[][] grid = new char[height][width];
int currentLine = 0;
inputLine = input.readLine(); // added before while
while(inputLine != null) {
System.out.println(inputLine);
for(int i = 0; i < inputLine.length() - 1; i++){
char currentGem = inputLine.charAt(i);
grid[currentLine][i] = currentGem;
}
currentLine++;
inputLine = input.readLine(); // last line in while
}
input.close();
currentGrid = new Grid(grid);
}
catch(IOException e) {
System.out.println(e.getMessage());
currentGrid = null;
}
return currentGrid;
}
我试图通过使用Kryonet进行通信来创建一个基本的IRC。我遇到的问题是,在我的代码中,我不能安全地使用允许用户键入和发送消息的main while循环,因为Scanner给出了一个错误,并且似乎跳过了对nextLine()的调用。我想做的是让扫描仪在继续之前等待用户输入。 更准确地说,程序将首先在行的开头放一个“:”,然后在用户按enter键后获取用户键入的任何内容,然后将其发送到服务器。我得
问题内容: 我一生无法理解为什么我无法在while循环之外阅读postPrioity。我尝试过“ export postPrioity =“ 500””仍然无法正常工作。 有任何想法吗? -或在计划文字中- 输出:(我在files.txt中只有3个文件名) 问题答案: 管道操作员创建一个子外壳,请参阅BashPitfalls和BashFAQ。解决方案:不要使用,反正毫无用处。
对于我的程序,我要编写一个程序,它接受2到10之间的行数。生成n行的乘法三角形。每行包含的条目不超过其行大小。这一点我没有问题。但是,在用户将数字0输入到我的问题“请输入要打印的行数:”之后,应该终止循环并打印“感谢您使用此程序!”我用了一个DO。。。WHILE循环以确定用户是否希望继续。在我的循环中,我将用户想要打印的数字声明为int num。我的循环应该持续到num
我正在设置一个,它在用户输入整数之前一直执行。但是,按照我现在的方式,循环在输入整数后再次打印消息,然后程序正常执行。有人能建议一种方法来使输入整数后不再打印该消息吗?谢了!
问题内容: 我了解Scanner的优点,以及何时使用Scanner和BufferedReader。我读了一个不同的问题,但在一些类似的问题中,它的问题是Scannervs. BufferedReader 当我从输入中读取内容时,为什么Scanner这么慢? 我认为这与Scanner中有一个小的缓冲区有关,但是在这里我迷路了。最初的问题来自 Codechef,但我对该解决方案不感兴趣。 这是具有给定
我有一个名为“add”的方法,它将字符串作为参数,并使用bufferedwriter将其写入文件。完成此操作后,bufferedwriter将被刷新。 在另一个方法“read”中,我遍历文件中的行,但这些行是空的(因此我不能打印它们)。