我正在创建一个程序,它基本上包含有关元素(来自元素周期表)的信息,例如原子质量,数字和符号。我想将所有关于它们的信息存储在一个文本文件中,但不确定如何对它进行编码以单独调用信息(而不是逐行读取文本文件)。
这是我目前为每个元素使用的代码:
private Element(int atomicNumber, double atomicMass, String atomicSymbol, String atomicName) {
this.atomicNumber = atomicNumber;
this.atomicMass = atomicMass;
this.atomicSymbol = atomicSymbol;
this.atomicName = atomicName;
}
在同一个文件中,我创建了一个这样的元素:
Element H = new Element(1, 1.008, "H", "Hydrogen");
我怎么能把它们放在一个文本文件中并从那里读出来,而不是将所有118个元素放在与代码相同的文件中?
我正在使用getAtomicNumber()和getAtomicMass()等方法来调用这些信息。
感谢。
答案 0 :(得分:0)
您有多种选择,因为您可以在文本文件中添加任何结构。我的推荐是XML或CSV格式。 CSV更易于管理/编辑,但XML更具结构化和易读性。我用一个简单的CSV。
在文件中为每个元素添加一行(将被引入您的Element类),并将每个Element属性(数字,质量,符号和名称)按特定顺序用逗号分隔,如下所示:
1,1.008,H,Hydrogen
2,5.021,C,Carbon
etc..
然后,您的代码应该逐行读取文件,创建元素类的实例,并将其保存在列表中。像这样:
您的元素类
public class Element {
private int atomicNumber;
private double atomicMass;
private String atomicSymbol;
private String atomicName;
public Element(int atomicNumber, double atomicMass, String atomicSymbol, String atomicName) {
this.atomicNumber = atomicNumber;
this.atomicMass = atomicMass;
this.atomicSymbol = atomicSymbol;
this.atomicName = atomicName;
}
public double getAtomicMass() {
return atomicMass;
}
public void setAtomicMass(double atomicMass) {
this.atomicMass = atomicMass;
}
public String getAtomicSymbol() {
return atomicSymbol;
}
public void setAtomicSymbol(String atomicSymbol) {
this.atomicSymbol = atomicSymbol;
}
public String getAtomicName() {
return atomicName;
}
public void setAtomicName(String atomicName) {
this.atomicName = atomicName;
}
public int getAtomicNumber() {
return atomicNumber;
}
public void setAtomicNumber(int atomicNumber) {
this.atomicNumber = atomicNumber;
}
@Override
public String toString() {
return "atomicMass: " + atomicMass
+ " | atomicSymbol: " + atomicSymbol
+ " | atomicName: " + atomicName
+ " | atomicNumber: " + atomicNumber;
}
}
元素文件阅读器
public class ElementsFileReader {
public static List<Element> read(String filePath) throws IOException {
FileReader fileReader = new FileReader(new File(filePath));
BufferedReader br = new BufferedReader(fileReader);
List<Element> elements = new ArrayList<>();
String line = null;
while ((line = br.readLine()) != null) {
String[] lineParts = line.split(",");
int atomicNumber = Integer.parseInt(lineParts[0]);
double atomicMass = Double.parseDouble(lineParts[1]);
String atomicSymbol = lineParts[2];
String atomicName = lineParts[3];
elements.add(new Element(atomicNumber, atomicMass, atomicSymbol, atomicName));
}
return elements;
}
}
使用ElementsFileReader和Element 您的主要应用
public static void main(String[] args){
String filePath = "the path to your text file";
List<Element> elements;
try {
elements = ElementsFileReader.read(filePath);
} catch(IOException e){
System.err.println("Something gone wrong reading elements file...");
e.printStackTrace();
return;
}
for(Element element : elements){
System.out.println(element);
// do your stuff
}
}
小心使用parseInt和parseDouble方法,我假设你的文本文件格式正确。 希望这可以帮到你。
答案 1 :(得分:0)
以相同的格式(1,1.008,H,Hydrogen)将所有元素写入文件,逐行读取并为每行创建一个Pojo对象并将其写入Map。
[ `id -u` -eq 0 ]
根据您的方便,您可以将Map键设置为任何其他唯一元素属性。