【问题标题】:Reading a file into Java using StringTokenizer使用 StringTokenizer 将文件读入 Java
【发布时间】:2015-03-02 21:31:33
【问题描述】:

我正在尝试做一个非常简单的任务,但我没有得到我想要的结果。我有一个文本文件,其名称在多行上用逗号分隔,我想将该信息存储在一维数组中。当我运行代码并尝试打印数组以确保记录了我的信息时,控制台仅打印出文本文件的最后一行。我的代码有什么问题?我已经尝试过使用它,但我没有找到解决我的问题的方法。信息是否被覆盖?

import java.util.*;

public class Tokens {
public static TextFileInput myFile;
public static StringTokenizer myTokens;
public static String name;
public static String[] names;
public static String line;

public static void main(String[] args) {

myFile = new TextFileInput("namesofstudents.txt");

  while ((line = myFile.readLine())!= null) {       
     int i=0;    

     myTokens = new StringTokenizer(line, ",");
     names = new String[myTokens.countTokens()];

        while (myTokens.hasMoreTokens()){
          names[i] = myTokens.nextToken();
          i++;
     }        
  }    

for (int j=0;j<names.length;j++){
   System.out.println(names[j]);       
}


   } 
}

输入示例:

  Mark, Joe, Bob
  James, Jacob, Andy, Carl

输出:

James
Jacob
Andy
Carl

【问题讨论】:

    标签: java arrays stringtokenizer


    【解决方案1】:

    代码在每一行的开头将i 初始化为0。在运行开始时执行此操作。

    【讨论】:

      【解决方案2】:

      考虑使用让生活更轻松的 ArrayList...

      List<String> names = new ArrayList<>();
      
      while ((line = myFile.readLine())!= null) {           
      
       myTokens = new StringTokenizer(line, ",");     
      
          while (myTokens.hasMoreTokens()){
            names.add(myTokens.nextToken());
          }        
      }    
      
      System.out.println(names);       
      

      【讨论】:

        【解决方案3】:

        您将重新开始计数并在每一行重写names

        尝试将names 创建为ArrayList

        ArrayList<String> names;
        

        在第一个循环之外初始化一次,如下所示:

        names = new ArrayList<String>();
        

        然后每次你通常将名称放入数组中时替换这一行:

        names[i] = myTokens.nextToken();
        

        与:

        names.add(myTokens.nextToken());
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-17
          相关资源
          最近更新 更多