将信息从txt文件排序到两个不同的数组中

时间:2012-11-03 17:56:02

标签: java arrays import

对于单一赋值,我必须从文本文件中获取输入并将其分类为两个单独的数组。该文本文件是一个足球联赛表,如下排列:
巴塞罗那34
皇马32

我写了一段这样的代码:

holdingString = fileInput.readLine ();                
StringTokenizer sort = new StringTokenizer (holdingString + " "); 
countOfTokens = sort.countTokens();
System.out.println (countOfTokens + " tokens: " + holdingString);

这打印出令牌的数量以及每行的令牌数,因此它给出了输出 两个代币:巴塞罗那34
三个代币:皇家马德里32

然后我写了这段代码:

for (int i = 0; i < countOfTokens; i++)
 {
  String temp = sort.nextToken ();          
  System.out.println(temp);
 }

这只读取下一个标记并将其打印出来 但是,我不想打印下一个标记,而是要检查它是单词还是数字,并相应地将它分成不同的数组,所以它将是这样的:
ArrayTeam Zero Element巴塞罗那 ArrayTeam First Element Real Madrid
ArrayPoints零元素34
ArrayPoints第一个元素32

最简单的方法是什么?我尝试过使用try / catch,但是没有把它弄好。我也尝试使用带有\ d的if语句,但这也没有用。

4 个答案:

答案 0 :(得分:0)

您可以使用split

保存所有问题
String strs[] = holdingString.split("\\s");

E.g。

"Barcelona 34".split("\\s"); will return you Array of Strings where 
 array[0]=Barcelona  array[1]=34

来自StringTokenizer

的Javadoc
  

StringTokenizer是一个遗留类,出于兼容性原因而保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人都使用String的split方法或java.util.regex包。

<强>更新 正如@madhairsilence指出的那样 你需要另一个分隔符。您可以使用=属性文件

"Real Madrid =34".split("=");//will return you Array of Strings where 
 array[0]=Real Madrid, array[1]=34

您可以在阅读文件时使用Scanner

答案 1 :(得分:0)

您可以使用java.util.Scanner类从文件中读取数据。它有像nextInt(),nextDouble这样的方法......在你的情况下可能会有用。

Scanner scan = new Scanner(file);
int number;
if(scan.hasNextInt()){
    number = scan.nextInt();
 }

检查Scanner API

答案 2 :(得分:0)

与AmitD一样,我同意在这种情况下使用split更合适,但如果您仍然想使用StringTokenizer,请执行以下操作:

StringBuilder teamName=new StringBuilder();
for (int i = 0; i < countOfTokens-1; i++)
{
  if (i>0) teamName.append(' ');
  teamName.append(sort.nextToken());          
}
teamNames[k]=teamName.toString(); //add the new team to your teamNames array
points[k]=Integer.parseInt(sort.nextToken()); //if your points array is of int type

答案 3 :(得分:0)

String readLine = "Real Madrib 40";

        String[] team = readLine.split( "\\d" );        
        System.out.println(team[0]);

        String score = readLine.replace( team[0],"" );      
        System.out.println(score);

输出

团队[0]:真正的Madrib

得分:40