0

好的,所以我已经在这个程序上工作了一个半星期,我觉得我真的很接近但一直在碰壁。我为此看了很多次,我承认我不太擅长使用 java 的常见问题解答系统。我正在尝试拉入一个字符串,该字符串包含表单中的文本,R Splayer1 为空格,player2 移动。在此之后,我尝试使用charAt(index)并且每次都得到一个 AIOOBE(它找不到任何位置)。我已经尝试在扫描仪中推进几行,只是为了得到一个可以工作的行,但我做不到。似乎它抓住了前 2 行int,即玩的游戏和每局的手数。

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 回答