gpt4 book ai didi

java - 在java中读取文件并将其内容放入二维数组中

转载 作者:行者123 更新时间:2023-12-02 01:11:57 27 4
gpt4 key购买 nike

我正在尝试读取一个文件并将内容放入从第 5 行开始的二维数组中。我确实让程序运行时没有错误,但出了问题并且它没有填充数组。

我测试了一下,发现引入 while 循环后似乎出了问题。在 while 循环之外,文件的前 4 行已被成功读取,因此问题不应该出在文件读取器本身。

这是一个 while 循环,它应该读取剩余的行并将每个字符串的每个字符放入一个 2D 数组中:

while (fileReader.hasNextLine()) {
String fileLine = fileReader.nextLine();

int k = 0;
for (int i = 0; i < fileLine.length(); i++) {
for (int j = 0; j < columns; j++) {
fileArray[k][j] = fileLine.charAt(i);
}
}
k++
}

但是,如果我尝试打印数组,它只会打印空行。为什么它没有填充数组并且为什么没有给出任何错误?当然,我该如何修复此代码以使其正常工作?

//编辑。这是完整的代码,因为它似乎有更多的问题,而不仅仅是 for 循环(我为此修复了):

import java.io.*;
import java.util.Scanner;
public class Filer {

public static void main (String[] args) {
Scanner fileReader = null;
char[][] fileArray = null;

try {
String fileName = "alphabet.txt";
File textFile = new File(fileName);
fileReader = new Scanner(fileName);

String line1 = fileReader.nextLine();
int rows = Integer.parseInt(line1);

String line2 = fileReader.nextLine();
int columns = Integer.parseInt(line2);

fileArray = new char[rows][columns];

char line3 = fileReader.nextLine().charAt(0);
char line4 = fileReader.nextLine().charAt(0);

int i = 0;

while (fileReader.hasNextLine()) {
String fileLine = fileReader.nextLine();
for (int r = 0; r < fileLine.length(); r++) {
fileArray[i][r] = fileLine.charAt(r);
}
i++;
}

fileReader.close();
}

catch (Exception e) {
if (fileReader != null) {
fileReader.close();
}
}

if (fileArray != null) {
for (int i = 0; i < fileArray.length; i++) {
System.out.print(fileArray[i]);
System.out.println();
}
}
else {
System.out.println("Error!");
}
}
}

文件内容是:

4
4
x
o
xxxx
xxox
ooxo
xxxx

最佳答案

之前,您有一些语法错误,但我可以看到您现在已经更正了它们。下面给出的是工作代码。运行它并让我知道它是否有效。

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

public class Filer {

public static void main(String[] args) {
Scanner fileReader = null;
char[][] fileArray = null;

try {
File file = new File("alphabet.txt");
if (file.exists()) {
fileReader = new Scanner(file);
} else {
System.out.println("The file does not exist");
}

String line1 = fileReader.nextLine();
int rows = Integer.parseInt(line1);

String line2 = fileReader.nextLine();
int columns = Integer.parseInt(line2);

fileArray = new char[rows][columns];

char line3 = fileReader.nextLine().charAt(0);
char line4 = fileReader.nextLine().charAt(0);

int i = 0;

while (fileReader.hasNextLine()) {
String fileLine = fileReader.nextLine();
for (int r = 0; r < fileLine.length(); r++) {
fileArray[i][r] = fileLine.charAt(r);
}
i++;
}
fileReader.close();
} catch (Exception e) {
if (fileReader != null) {
fileReader.close();
}
}

if (fileArray != null) {
for (int i = 0; i < fileArray.length; i++) {
System.out.print(fileArray[i]);
System.out.println();
}
} else {
System.out.println("Error!");
}
}
}

关于java - 在java中读取文件并将其内容放入二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254756/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com