1

uni 割り当ての場合、テキスト ファイルから入力を取得し、それを 2 つの個別の配列に並べ替える必要があります。テキスト ファイルはサッカー リーグの表で、次のように配置されています。
バルセロナ 34
レアル マドリード 32

私は次のようなコードを書きました:

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

これにより、トークンの数と各行のトークンが出力されるため、
2 つのトークン: バルセロナ 34
3 つのトークン: レアル マドリード 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

java.util.Scannerクラスを使用して、ファイルからデータを読み取ることができます。nextInt()、nextDoubleなどのメソッドがあります...whhichはあなたの場合に役立つかもしれません。

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

スキャナーAPIを確認してください

于 2012-11-03T18:01:30.200 に答える
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
于 2012-11-03T18:02:43.627 に答える
0

を使用すると、そのすべての手間を省くことができますsplit

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

例えば

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

の Javadoc からStringTokenizer

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を使用できます。

于 2012-11-03T17:58:10.673 に答える
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 に答える