gpt4 book ai didi

java - 从文件而不是从控制台读取

转载 作者:行者123 更新时间:2023-12-01 13:06:30 25 4
gpt4 key购买 nike

我抛出异常,我认为它与ArrayIndexOutOfBounds有关在子字符串处,您还认为下面的方法可以在解析后将数据传递到我的数组

我希望从这样的 txt 文件中读取每一行:

  1
0
1
0
0
1
0

每行一个整数!

String fileName = "input.txt";
File file = new File(fileName);
Scanner scanner = new Scanner(file);

while(scanner.hasNextLine()){
data1 = scanner.nextLine();

}
for ( int i = 0; i < data1.length(); i++)
{
covertDataArray[i] = Byte.parseByte(data1.substring( i, i+1));
}

这是以前的工作版本,但它从控制台读取。它会在哪里:1010101001

System.out.println("Enter the binary bits");

data1 = in.next();


for ( int i = 0; i < data1.length(); i++)
{
covertDataArray[i] = Byte.parseByte(data1.substring( i, i+1));
}

最佳答案

您正在读取所有行,只将最后一行保留在 data1 变量中。这可能是你的问题。

相反,您应该在读取文件时立即处理每个值,并构建一个 ArrayList 而不是数组(因为您事先不知道它的大小):

String fileName = "input.txt";
File file = new File(fileName);
Scanner scanner = new Scanner(file);

ArrayList<Byte> covertDataList= new ArrayList<>();
while(scanner.hasNextLine()){
String line = scanner.nextLine(); // the line should be just a number
covertDataList.add(Byte.parseByte(line)); // no substring needed
}

如果你想在文件格式错误时很好地失败,你可以用 try/catch block 包围 parseByte

关于ArrayList

如果您想将列表用作数组,您可以:

  • 使用covertDataList.get(i)而不是covertDataArray[i]
  • 使用 covertDataList.set(i, value); 而不是 covertDataArray[i] = value;

如果你确实需要一个数组(我在这里不明白这一点),你可以这样做:

Byte[] covertDataArray = covertDataList.toArray(new Byte[list.size()]);

关于java - 从文件而不是从控制台读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23224094/

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