我有这个大学的项目,他们要求我用Java创建一个简单的银行系统。到目前为止,我已经能够做得很好,除非下次存储数据以便使用它。
最近我找到了存储代码,其中我的所有数据都存储在文本文件中:
int str str int
5487,Samer,Lebanon,1000000
8792,Ahmad,Lebanon,2500000
等使用io库,如:
public static void saveToFile(int[] accounts,String[] names,String[] addresses,int[] balances,int maxTmp) {
bubbleSorting(accounts,names,addresses,balances,maxTmp);
try {
//What ever the file path is.
File statText = new File("C:/Users/Wicked Angel/Desktop/customers.txt");
FileOutputStream is = new FileOutputStream(statText);
OutputStreamWriter osw = new OutputStreamWriter(is);
Writer w = new BufferedWriter(osw);
for(int i=0;i<maxTmp;i++)
w.write(accounts[i] + "," + names[i] + "," + addresses[i] + "," + balances[i] + System.getProperty("line.separator"));
w.close();
} catch (IOException e) {
System.err.println("Problem writing to the file customers.txt");
}
}
当我尝试导入该文本文件并将每个值设置为其特定数组时,困难就在于此。
任何帮助?
答案 0 :(得分:0)
使用你的','作为分隔符。读取每一行并使用分隔符分隔它们,比如说如果我想提取String text =“holy,molly”我会做
String holy = text.substring(0,text.indexOf(','));
和
String molly = text.substring(text.indexOf(','))
答案 1 :(得分:0)
首先,您必须逐行阅读文本文件
// your file
File statText = new File("C:/Users/Wicked Angel/Desktop/customers.txt");
// read file using FileReader class
FileReader fr = new FileReader(statText);
BufferedReader br = new BufferedReader(fr);
// the first line is the header line and might be ignored
String line = br.readLine();
// loop through each line by reading it from the buffer
while ((line = br.readLine()) != null) {
// process each line
}
br.close();
这将遍历文件中的每一行。 line
将是一个字符串。下面是while循环中第一个字符串的示例。
line: "5487,Samer,Lebanon,1000000"
您需要做的是将每个部分分开并将其放入阵列中。这可以使用String
- object中的Split()
方法完成。 (单击方法名称以阅读文档)。
String[] myParts = line.Split(",");
结果将是
myParts: ["5487"] ["Samer"] ["Lebanon"] ["1000000"]
那是一个阵列。只需浏览上面的数组并将每个变量存储在适当的数组中。 ArrayList<int> accounts
中的第一个元素,ArrayList<String> names
中的第二个元素...下面是第一个元素的示例
// outside loop
ArrayList<int> accounts = new ArrayList<int>();
// inside loop
accounts.Add(Integer.parseInt(myParts(0)));
// since it should be an integer, I parse it to int before adding it
使用ArrayList
背后的原因是因为您不知道文字中有多少行。你可以检查它,但性能明智,建议使用ArrayList
动态数组。 (如果需要,可以使用其他列表对象)。如果您想了解有关ArrayList
的更多信息,请参阅this documentation创建,添加元素,获取元素,...
哦,也不要忘记将第一个和第三个元素强制转换为int,否则在尝试在int
ArrayList中添加这些信息时会出错。如果需要,您还可以验证每个元素以确保您没有错误的数据(比如拆分行的结果是三个元素的数组,这是不正确的。)
这可以帮助您解决导入问题。祝你好运