0

さて、私はこのプログラムに 1 週​​間半取り組んできましたが、本当に近づいているように感じますが、壁にぶつかっています。私はこれについて高低を見てきましたが、確かにJavaのFAQシステムを使用するのはあまり得意ではありません. R Splayer1 がスペースで、player2 が移動するフォームにテキストを含む文字列を取り込もうとしています。この後、私は使用しようとしましたcharAt(index)が、毎回 AIOOBE を取得しています (位置が見つかりません)。機能するものを取得するためだけに、スキャナーでいくつかの行を進めようとしましたが、できません。intプレイされたゲームとゲームごとのハンドであるとして最初の 2 行を取得しているようです。

import java.util.*;
import java.lang.*;
import java.io.*;

public class rPS{
    public static void main(String ... args) throws IOException{
        int count = 0;
        File myFile = new File("a.txt");
        Scanner fin = new Scanner(myFile);
        int games = fin.nextInt();
        for(int i = 0; i<games; i++){
            int rounds = fin.nextInt();
            int tie = 0;
            int p1win = 0;
            int p2win = 0;
            for(int j=0; j<rounds; j++){
                String line = fin.nextLine();
                char p1 = line.charAt(0);
                char p2 = line.charAt(2);
                if (p1 == p2)
                    tie = tie + 1;
                else if (p1 == 'R'){
                    if (p2 == 'S')
                        p1win = p1win + 1;
                    else if (p2 == 'P')
                        p2win = p2win + 1;
                }else if (p1 == 'P'){
                    if (p2 == 'S')
                        p2win = p2win + 1;
                    else if (p2 == 'R')
                        p1win = p1win + 1;
                }else if (p1 == 'S'){
                    if (p2 == 'P')
                        p1win = p1win + 1;
                    else if (p2 == 'R')
                        p2win = p2win + 1;
                }
            }
            if(p1win > p2win)
                System.out.println("Player 1");
            else if(p2win > p1win)
                System.out.println("Player 2"); 
            else
                System.out.println("Tie!");     
        }
    }
}
4

1 に答える 1

0

ラウンドの読み取りと最初の移動での行の読み取りの間に戻り値を保存せずにnextLine()を呼び出してみてください。

スキャナーは、読み取った整数を超えたままで、nextline()を呼び出すと、期待どおりに次の行ではなく改行文字を返します。

于 2013-02-16T02:07:45.477 に答える