1

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

我写了一段这样的代码:

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

这将打印出令牌的数量以及每行的令牌是什么,因此它给出了
两个令牌的输出:Barcelona 34
三个令牌:Real Madrid 32

然后我写了这段代码:

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

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

最简单的方法是什么?我尝试过使用 try/catch,但没有做对。我也尝试过使用带有 \d 的 if 语句,但这也不起作用。

4

4 回答 4

0

您可以使用split

String strs[] = holdingString.split("\\s");

例如

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

来自 JavadocStringTokenizer

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

您可以在读取文件时使用扫描仪。

于 2012-11-03T17:58:10.673 回答
0

您可以使用 java.util.Scanner 类从文件中读取数据。它具有诸如 nextInt()、nextDouble 之类的方法……这在您的情况下可能很有用。

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

检查扫描仪 API

于 2012-11-03T18:01:30.200 回答
0

像 AmitD 一样,我同意 usingsplit在这种情况下更合适,但如果您仍然喜欢使用 a 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
于 2012-11-03T18:02:43.627 回答
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);

输出 :

team[0] : 皇家马德里

分数:40

于 2012-11-03T18:10:47.853 回答