Java 石头剪纸游戏不会运行

Java 石头剪纸游戏不会运行,java,Java,好的,大家好。这是我第一次在stackoverflow上,我在这里做了很多搜索,所以我想这将是一个获得一些答案的好地方。我是一个初学者程序员,目前在学校。我正在完成我的任务,制作一个石头、布、剪刀的游戏。到目前为止,我觉得我的代码很好,我编译了它,但它根本不会运行。看一看: import java.util.Scanner; public class RPSGame { public static void gameModeSelect () { Sy

好的,大家好。这是我第一次在stackoverflow上,我在这里做了很多搜索,所以我想这将是一个获得一些答案的好地方。我是一个初学者程序员,目前在学校。我正在完成我的任务,制作一个石头、布、剪刀的游戏。到目前为止,我觉得我的代码很好,我编译了它,但它根本不会运行。看一看:

    import java.util.Scanner;
    public class RPSGame {


    public static void gameModeSelect ()
    {
    System.out.println("Welcome to Rock, Paper, Scissors 1.0 !\n Please select your game mode: ");
    System.out.println("1. Player vs. Computer\n 2. Player vs. Player ");
    }

    public static void winLoss ()
    {
    int P1 = 0, P2 = 0;

    if (P1 == 'P' && P2 == 'R'){
        System.out.println("Paper covers rock!\nPlayer one wins!");
    } else if (P1 == 'R' && P2 == 'P'){
        System.out.println("Paper covers rock!\nPlayer two wins!");
    }    
    if (P1 == 'R' && P2 == 'S'){
        System.out.println("Rock breaks scissors!\nPlayer one wins!");
    } else if (P1 == 'S' && P2 == 'R'){
        System.out.println("Rock breaks scissors!\nPlayer two wins!");
    }
    if (P1 == 'S' && P2 == 'P'){
        System.out.println("Scissor cuts paper!\nPlayer one wins!");
    } else if (P1 == 'P' && P2 == 'S'){
        System.out.println("Scissor cuts paper!\nPlayer two wins!");
    }
   }

    public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);  

    int P1;
        P1 = 0;
    int P2;
        P2 = 0;
    int modeSelect;
    modeSelect = keyboard.nextInt();

    gameModeSelect ();
    if (modeSelect == 1){
        System.out.println("Oops, this feature in currently unavailable. Play with a friend for now :-)");
    } else if (modeSelect == 2){

        System.out.println("Rules of the game:  R = Rock, P = Paper, S = Scissors\n Good luck! ");

        System.out.println("Player one: Enter your move");
        P1 = keyboard.nextInt();
        System.out.println("Player two: Enter your move");
        P2 = keyboard.nextInt();

    } else if (modeSelect > 2){
        winLoss();

    }

  }
}
它编译时没有错误,但没有运行,但是当我在“运行”部分输入任何内容时,会出现以下错误:

run:
S
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at RPSGame.main(RPSGame.java:41)
C:\Users\AVLG2\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 12 seconds)

我被困在这里了,我的作业明天就要交了。有什么建议吗?我们将不胜感激。顺便说一句,很高兴成为stackoverflow社区的一员

因为在
main
方法中调用了

modeSelect = keyboard.nextInt();
在打印任何东西之前。此调用将停止主线程,直到用户提供一些要读取的数据。如果数据类型为
int
控制流将把您移动到下一行,如果数据类型为
int
将抛出异常(就像您的情况一样,因为
R
无效
int

要让用户知道正在进行的操作,请打印说明程序正在等待其输入的消息:

System.out.print("Please provide game mode (<mode explanation here>): ");
modeSelect = keyboard.nextInt();
System.out.print(“请提供游戏模式():”;
modeSelect=keyboard.nextInt();
另外,当您向用户询问字符时,您不能使用
nextInt()
,因为
R
不是
int
。改用
next()


如果出现问题,请阅读:




如前所述,
扫描仪#nextInt()
只能解析用户输入的整数。对于字符,它抛出一个异常

以下是您的代码,并对其进行了一些小的更改:

public class RPSGame {

public static void gameModeSelect() {
    System.out.println("Welcome to Rock, Paper, Scissors 1.0 !\n Please select your game mode: ");
    System.out.println("1. Player vs. Computer\n 2. Player vs. Player ");
}

public static void winLoss() {
    int P1 = 0, P2 = 0;

    if (P1 == 'P' && P2 == 'R') {
        System.out.println("Paper covers rock!\nPlayer one wins!");
    } else if (P1 == 'R' && P2 == 'P') {
        System.out.println("Paper covers rock!\nPlayer two wins!");
    }
    if (P1 == 'R' && P2 == 'S') {
        System.out.println("Rock breaks scissors!\nPlayer one wins!");
    } else if (P1 == 'S' && P2 == 'R') {
        System.out.println("Rock breaks scissors!\nPlayer two wins!");
    }
    if (P1 == 'S' && P2 == 'P') {
        System.out.println("Scissor cuts paper!\nPlayer one wins!");
    } else if (P1 == 'P' && P2 == 'S') {
        System.out.println("Scissor cuts paper!\nPlayer two wins!");
    }
}

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);

    String P1 = null;
    String P2 = null;
    int modeSelect;

    gameModeSelect();
    modeSelect = keyboard.nextInt();
    if (modeSelect == 1) {
        System.out.println("Oops, this feature in currently unavailable. Play with a friend for now :-)");
    } else if (modeSelect == 2) {

        System.out.println("Rules of the game:  R = Rock, P = Paper, S = Scissors\n Good luck! ");

        System.out.println("Player one: Enter your move");
        P1 = keyboard.next();
        System.out.println("Player two: Enter your move");
        P2 = keyboard.next();

    } else if (modeSelect > 2) {
        winLoss();

    }

}
}
缺少评估,但我想这取决于你

public static void gameModeSelect() {
    System.out.println("Welcome to Rock, Paper, Scissors 1.0 !\n Please select your game mode: ");
    System.out.println("1. Player vs. Computer\n 2. Player vs. Player ");
}

public static void winLoss(char P1, char P2) {

    if (P1 == 'P' && P2 == 'R') {
        System.out.println("Paper covers rock!\nPlayer one wins!");
    } else if (P1 == 'R' && P2 == 'P') {
        System.out.println("Paper covers rock!\nPlayer two wins!");
    }
    if (P1 == 'R' && P2 == 'S') {
        System.out.println("Rock breaks scissors!\nPlayer one wins!");
    } else if (P1 == 'S' && P2 == 'R') {
        System.out.println("Rock breaks scissors!\nPlayer two wins!");
    }
    if (P1 == 'S' && P2 == 'P') {
        System.out.println("Scissor cuts paper!\nPlayer one wins!");
    } else if (P1 == 'P' && P2 == 'S') {
        System.out.println("Scissor cuts paper!\nPlayer two wins!");
    }
}

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);

    char P1;
    char P2;
    int modeSelect;

    gameModeSelect();
    modeSelect = keyboard.nextInt();

    if (modeSelect == 1) {
        System.out.println("Oops, this feature in currently unavailable. Play with a friend for now :-)");
    } else if (modeSelect == 2) {

        System.out.println("Rules of the game:  R = Rock, P = Paper, S = Scissors\n Good luck! ");

        System.out.println("Player one: Enter your move");
        P1 = keyboard.next().charAt(0);
        System.out.println("Player two: Enter your move");
        P2 = keyboard.next().charAt(0);
        winLoss(P1, P2);

    }
}
  • 您必须选择游戏模式:modeSelect=keyboard.nextInt()
  • 读取玩家输入:P1=键盘.next().charAt(0);(&P2行)
  • 评估游戏:使用适当的值调用winLoss函数

  • 我不确定这个回复是否被允许,因为我读到了“只有问题和答案”,但谢谢!我最初试图使P1和P2字符,但无法使其工作。你建议的“keyboard.next().charAt(0);”是我找不到的关键。再次感谢。我想我是从这里得到的!可能重复的