Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用StringTokenizer将文件读入Java_Java_Arrays_Stringtokenizer - Fatal编程技术网

使用StringTokenizer将文件读入Java

使用StringTokenizer将文件读入Java,java,arrays,stringtokenizer,Java,Arrays,Stringtokenizer,我试图做一个非常简单的任务,但我没有得到我想要的结果。我有一个文本文件,文件名由多行逗号分隔,我想将这些信息存储在一维数组中。当我运行代码并尝试打印数组以确保记录了我的信息时,控制台只打印文本文件的最后一行。我的代码有什么问题?我试过玩弄它,但我找不到解决问题的办法。信息是否被覆盖 import java.util.*; public class Tokens { public static TextFileInput myFile; public static StringTokenizer

我试图做一个非常简单的任务,但我没有得到我想要的结果。我有一个文本文件,文件名由多行逗号分隔,我想将这些信息存储在一维数组中。当我运行代码并尝试打印数组以确保记录了我的信息时,控制台只打印文本文件的最后一行。我的代码有什么问题?我试过玩弄它,但我找不到解决问题的办法。信息是否被覆盖

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


   } 
}
输出:

James
Jacob
Andy
Carl

代码在每行开头将
i
初始化为
0
。在跑步开始时这样做。

考虑使用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);       
List name=new ArrayList();
而((line=myFile.readLine())!=null){
myTokens=新的StringTokenizer(行,“,”);
while(myTokens.hasMoreTokens()){
name.add(myTokens.nextToken());
}        
}    
System.out.println(名称);

您正在重新开始计数,并在每行上重写
名称

尝试将
名称
创建为
数组列表

ArrayList<String> names;
与:

ArrayList<String> names;
names = new ArrayList<String>();
names[i] = myTokens.nextToken();
names.add(myTokens.nextToken());