我应该在上一个项目中使用我的计算机类my computer class,用Java编写一个程序,该程序读取计算机数据名称computers.txt的文件,并创建计算机对象数组,到目前为止,我已经有了这个程序。
package project5;
import java.util.Scanner;
import java.io.*;
public class Project5 {
public static void main(String[] args){
String[][] compArray = new String[50][50];
String line = ":";
String [] temp;
Scanner file =null;
try
{
file = new Scanner(new File("computers.txt"));
}
catch(FileNotFoundException e)
{
System.out.println("Could not open file " + "computers.txt");
System.exit(200);
}
int i = 0;
while ((line = file.nextLine())!= null){
temp = line.split(":");
for (int j = 0; j<compArray[i].length; j++) {
compArray[i][j] = temp[j];
}
i++;
}
System.out.println(compArray[0][0]);
}
}
现在我得到一个错误。我做了
System.out.println(compArray[0][0]);
看看它是否在工作,但是我得到了那个错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at project5.Project5.main(Project5.java:44)
的computers.txt文件看起来像这样
Dell Computers Inc.:Inspiron 15 Touch:6:500:Intel Core i5:CD/DVD+-RW:Windows 8.1:649.99
Dell Computers Inc.:Inspiron 17:4:500:Intel Core i3:CD/DVD+-RW:Windows 7:549.99
Dell Computers Inc.:Alienware 18:16:1000:Intel Core i7:Dual Layer Blu-ray:Windows 7:2999.99
Acer Computers Inc.:Aspire AT3-600:6:2000:Intel Core i5:BlueRay:Windows 8:599.99
我在读取文件时需要有关创建数组的帮助
最佳答案
您已经有一个Computer
类(您链接到的类),该类可以容纳给定“计算机”的所有这些属性。
您知道文件中的每一行代表一台单独的计算机。因此,每一行都可以用Computer
(链接到的行)表示。
您知道如何使用split()
将这些行解析为字符串数组,并且该拆分数组中的每个元素都精确对应于“计算机”的属性之一。这意味着文件的每一行都可以产生一个String[]
,其中该String[]
的每个元素代表计算机的属性之一(例如,制造商是compArray[0]
,型号是compArray[1]
,等等)。
您还知道您已经可以使用动态数组,例如ArrayList<Computer>
。
现在,只需将所有这些放在一起即可:
从文件中读取每一行。对于每一行:
像已经做的那样拆分它。
构造一个新的Computer
并将拆分标记复制到适当的属性。
将该Computer
添加到动态List<Computer>
中。
确保妥善处理错误:如果您击中空白行或其中没有预期令牌数的行,会发生什么?
您拥有所需的所有工具,因此请考虑如何将它们组合在一起以解决当前的问题。
关于java - 当扫描仪读取文本文件时,创建对象数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22416585/