gpt4 book ai didi

java - 如何将 .dat 文件导入多个数组

转载 作者:行者123 更新时间:2023-11-30 06:52:09 26 4
gpt4 key购买 nike

好吧,我正在开发一个读取元素周期表的程序,您可以根据数字或缩写搜索元素。

无论如何,我在尝试将元素周期表文件读入 4 个不同的数组时有点卡住了:原子序数、缩写、元素名称和原子量。

我不知道如何编写一个方法来一次性将所有信息导入每个数组。我想要一个包含所有这些数组的类,我可以在以后需要每个数组时调用它。

这是我到目前为止得到的,顺便说一句,我有点生疏......我认为从事这个项目会让我重新熟悉基础知识。

class PeriodicTable{
private String fileName = "periodictable.dat";

private int[] atomicNumTable = new int[200];
private String[] abbreviationTable = new String[200];
private String[] nameTable = new String[200];
private double[] atomicWeightTable = new double[200];

PeriodicTable(String fileName){
readTable(fileName);
}

public int[] readTable(String fileName){
Scanner inFile = null;
try{
inFile = new Scanner(new File(fileName));
}catch(FileNotFoundException nf){
System.out.println(fileName + " not found");
System.exit(0);
}

atomicNumTable = new int[200];
int i = 0;
while(inFile.hasNext() && i < atomicNumTable.length){
int number = inFile.nextInt();
atomicNumTable[i] = number;
i++;
}
inFile.close();
return atomicNumTable;
}
}

表格的每一行如下所示:

1    H   Hydrogen    1.00794

最佳答案

  1. 只需使用 java.lang.String.split(' ') (假设您的列使用空格分隔;如果它使用其他内容;您只需要调整该正则表达式参数!)
  2. 这将返回一个字符串数组;你基本上现在:第一列应该是一个 int,然后你有两个字符串,然后是一个 double 值。或者更准确地说:你得到字符串,意味着其他东西;因此你必须研究像 Integer.valueOf() 这样的方法;和 Double 类似。

从那里开始应该不会太难。

但我建议对您的逻辑进行一些更改:拥有4 不同的表根本没有意义。好的 OO 编程是关于创建有用的抽象。如果没有抽象,您的程序本身就会变得抽象

意思是:你应该引入一个像这样的类

public class Element {
private final int id;
private final String abbreviation;
private final String fullName;
private final double atomicWeight;

... with one constructor that takes all 4 parameters

... with getter methods for the fields of this class

... and meaningful overrides for equals() and hashcode()

然后,不是创建 4 数组;你创建一个数组,或者更好的是ArrayList<Element> .而不是将 4 个值放入 4 个不同的数组,而是在每个循环迭代中创建一个 新的 Element 对象;然后将该新对象添加到列表中。

您的解决方案的主要区别在于:您可以将元素作为一个整体来处理;而在您的解决方案中,单个“元素”基本上是指向 4 个不同表的索引。

关于java - 如何将 .dat 文件导入多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39444191/

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