读取文件并将名称和数字存储在两个数组中

我正在研究一个程序,它读取文件并将名称和分数存储在两个独立的数组中,但我很挣扎。 这就是我到目前为止所拥有的。 我为名称名称创建了一个数组,但我很困惑如何将名称复制到数组的每个索引中。

import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ScannerReadFileSplit { public static void main(String[] args) { File file = new File("NamesScore.txt"); String[] names = new String[100]; int[] scores = new int[100]; int i; try { Scanner scanner = new Scanner(file); while (scanner.hasNextLine()) { String line = scanner.nextLine(); String [] words = line.split("\t"); for (String word: words) { System.out.println(word); } } } catch (FileNotFoundException e) { e.printStackTrace(); } } } 

我的文本文件是:

 John James 60 Kim Parker 80 Peter Dull 70 Bruce Time 20 Steve Dam 90 

首先,在声明时,您需要将i初始化为0

 int i = 0; 

然后,在拆分线后,您可以从String[]提取数据并将其放入您的namesscores数组中:

 String [] words = line.split("\t"); // The first element in 'words' is the name names[i] = words[0]; // The second element in 'words' is a score, but it is a String so we have // to convert it to an integer before storing it scores[i] = Integer.parseInt(words[1], 10); // Increment 'i' before moving on to the next line in our file i++; 

不要忘记如上所示增加i

有一些错误检查,我已经掩盖了。 在调用split()之后,您可能希望检查words的长度为2。 还要记住,如果Integer.parseInt()无法将得分列中的数据解析为整数,则可以抛出NumberFormatException

我试图纠正你的代码并提供内联评论,我觉得你出错了。 实际上你接近解决方案。 尝试在一行代码之后找出你得到的输出

 String[] words = line.split("\t"); 

这一行将提供两个String(因为它将分割文件中的行,该行只有一个制表符分隔名称和分数)。 你可以尝试自己调试。 就像打印价值一样。 例如

 System.out.println(words[0]); 

这将有助于您进一步发展。

希望这可以帮助。

 import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class TwoArrays { public static void main(String[] args) { File file = new File("C:\\test\\textTest.txt"); String[] names = new String[100]; int[] scores = new int[100]; int i = 0; try { Scanner scanner = new Scanner(file); while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] words = line.split("\t"); names[i] = words[0]; // storing value in the first array scores[i] = Integer.parseInt(words[1]); // storing value in the // second array i++; } /* * This piece of code will give unnecessary values as you have * selected an array of size greater than the values in the file for * * for(String name: names) { * System.out.println("Name:- "+name); * } * for(int score: scores) { * System.out.println("Score:- "+score); * } */ // Better use the below way, here i am restricting the iteration till i // i is actually the count of lines your file have. for (int j = 0; j < i; j++) { System.out.println("Name:- " + names[j] + "\t" + "Score:- " + scores[j]); } } catch (FileNotFoundException e) { e.printStackTrace(); } } } 

关于什么

  int l = 0; while (scanner.hasNextLine()) { String line = scanner.nextLine(); String [] words = line.split("\t"); names[l] = words[0]; scores[l] = Integer.parseInt(words[1]); System.out.println(l + " - name: " + names[l] + ", score: " + scores[l]); l++; }