0

スキャナーを使用して配列にデータを入力しています。「if」ステートメントで (player[i].Name) を出力すると、値が出力されるため、機能しているようです。しかし、この値をステートメント (players[1].Name) の外に出力しようとすると、null 値が返されます。

int i = 0;
        while (scanner.hasNextLine()) {
                if (scanner.hasNext()) {
                players[i].Name = scanner.next();
                System.out.println(players[i].Name);
                }
                if (scanner.hasNext()) {
                players[i].Position = scanner.next();
                System.out.println(players[i].Position);
                }
                if (scanner.hasNext()) {
                players[i].Height = scanner.next();
                System.out.println(players[i].Height);
                }
                 if (scanner.hasNext()) {
                players[i].Weight = scanner.next();
                System.out.println(players[i].Weight);
                }
               i++;      
            }//end while
4

2 に答える 2

1

これを for ループで実行します。それが望ましい結果をもたらすとは思いません。基本的に、スキャナーが次のものを持っている間、同じプレーヤーに名前を割り当てています。for ループから取り出し、ループの最後に i++ を使用した while ループを作成します。

于 2012-05-14T03:40:00.187 に答える
1

これを10回実行しています(iごとに):

 // Get all possible scanner entries for all possible lines for i=0
 while (scanner.hasNextLine()) {
        if (scanner.hasNext()) {
            players[i].Name = scanner.next();
 // .. then repeat getting all scanner entries for all lines for i=1...

多分これはあなたが意味したものです:

int i = 0;
while (scanner.hasNextLine()) {
    if (scanner.hasNext()) {
        players[i].Name = scanner.next();
        System.out.println(players[i].Name);
        i++;
    }
}

または多分これさえ:

int i = 0;
while (scanner.hasNextLine()) {
    while (scanner.hasNext()) {
        players[i].Name = scanner.next();
        System.out.println(players[i].Name);
        i++;
    }
}

またはこれ:

int i = 0;
while ((i < 10) && scanner.hasNextLine()) {
    while ((i < 10) && scanner.hasNext()) {
        players[i].Name = scanner.next();
        System.out.println(players[i].Name);
        i++;
    }
}
于 2012-05-14T03:41:30.703 に答える