有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在开发一个程序,它读取一个文件,并将名称和分数存储在两个单独的数组中,但我正在努力。这就是我目前所拥有的。 我为名为names的名称创建了一个数组,但我不知道如何将名称复制到数组的每个索引中

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

共 (3) 个答案

  1. # 1 楼答案

    那怎么办

      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++; 
       }
    
  2. # 2 楼答案

    首先,在声明时,您需要将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

    我已经掩盖了一些错误检查。在调用^{}之后,您可能需要检查words的长度是否为2。还要记住,如果^{}无法将分数列中的数据作为整数解析,则它可以抛出一个^{}

  3. # 3 楼答案

    我试图更正您的代码,并在我认为您出错的地方提供内联注释。事实上,你已经接近解决方案了。在一行代码之后,试着找出作为输出得到的是什么,如

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

    这一行将给出两个字符串(因为它将分割文件中只有一个选项卡分隔名称和分数的行)。你可以试着自己调试。就像简单地打印值一样。比如说

    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();
            }
        }
    }