无法使用一会儿,或者无法执行... while循环工作,查找了多个答案。什么都行不通

塔克B

除循环外的所有内容都有效,当被问及是否要再次玩时,输入“ y”或“ n”会引发错误,我一生都无法弄清楚。

对不起,如果此代码格式不正确,请复制并粘贴。

/* © Tucker Fowler 2015
 */
package rpslizardspock;

import java.util.Scanner;
import java.util.Random;

/**
 *
 * @author Tucker
 */
public class RpsLizardSpock {


public static void main(String[] args) {

    String userChoice;
    boolean goAgain;
    boolean y = true;
    boolean n = false;

    Scanner sc = new Scanner(System.in);
    Random ra = new Random();
    while (goAgain = y) {

        System.out.println("Welcome to Rock, Paper, Scissors, Lizard, Spock\n\n"
                + "Please make a Choice: ");
        userChoice = sc.nextLine();

        String ucConv = userChoice.toUpperCase();

        System.out.println("You Chose: " + userChoice);

        int cpuChoice = ra.nextInt(5) + 1;

        if ((cpuChoice == 1) && (((ucConv.equals("LIZARD"))) || ((ucConv.equals("SCISSORS"))))) {
            System.out.println("\n\nComputer chose Rock, You Lose");
        } else if ((cpuChoice == 1) && (((ucConv.equals("PAPER"))) || ((ucConv.equals("SPOCK"))))) {
            System.out.println("\n\nComputer chose Rock, You Win");
        } else if ((cpuChoice == 2) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("ROCK"))))) {
            System.out.println("\n\nComputer chose Paper, You Lose");
        } else if ((cpuChoice == 2) && (((ucConv.equals("SCISSORS"))) || ((ucConv.equals("LIZARD"))))) {
            System.out.println("\n\nComputer chose Paper, You Win");
        } else if ((cpuChoice == 3) && (((ucConv.equals("LIZARD"))) || ((ucConv.equals("PAPER"))))) {
            System.out.println("\n\nComputer chose Scissors, You Lose");
        } else if ((cpuChoice == 3) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("ROCK"))))) {
            System.out.println("\n\nComputer chose Scissors, You Win");
        } else if ((cpuChoice == 4) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("PAPER"))))) {
            System.out.println("\n\nComputer chose Lizard, You Lose");
        } else if ((cpuChoice == 4) && (((ucConv.equals("SCISSORS"))) || ((ucConv.equals("ROCK"))))) {
            System.out.println("\n\nComputer chose Lizard, You Win");
        } else if ((cpuChoice == 5) && (((ucConv.equals("ROCK"))) || ((ucConv.equals("SCISSORS"))))) {
            System.out.println("\n\nComputer chose Spock, You Lose");
        } else if ((cpuChoice == 5) && (((ucConv.equals("PAPER"))) || ((ucConv.equals("LIZARD"))))) {
            System.out.println("\n\nComputer chose Spock, You Win");
        } else if ((cpuChoice == 1) && (ucConv.equals("ROCK"))) {
            System.out.println("\n\nComputer chose Rock also, Draw");
        } else if ((cpuChoice == 2) && (ucConv.equals("PAPER"))) {
            System.out.println("\n\nComputer chose Paper also, Draw");
        } else if ((cpuChoice == 3) && (ucConv.equals("SCISSORS"))) {
            System.out.println("\n\nComputer chose Scissors also, Draw");
        } else if ((cpuChoice == 4) && (ucConv.equals("LIZARD"))) {
            System.out.println("\n\nComputer chose Lizard also, Draw");
        } else if ((cpuChoice == 5) && (ucConv.equals("SPOCK"))) {
            System.out.println("\n\nComputer chose Spock also, Draw");
        }
        System.out.println("\n\n Would you like to play again? y/n");
        goAgain = sc.nextBoolean();
    }
}

}

我得到的错误是:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextBoolean(Scanner.java:1825)
    at rpslizardspock.RpsLizardSpock.main(RpsLizardSpock.java:73)
Java Result: 1
merlin2011

通常,使用a时Scanner,总是调用next()或always call的错误率最少nextLine()当我们使这两个一致时,解决分配问题,并比较y,则代码可以正常工作。

import java.util.Scanner;
import java.util.Random;
public class RpsLizardSpock {
    public static void main(String[] args) {

        String userChoice;
        boolean goAgain = true;

        Scanner sc = new Scanner(System.in);
        Random ra = new Random();
        while (goAgain) {

            System.out.println("Welcome to Rock, Paper, Scissors, Lizard, Spock\n\n"
                    + "Please make a Choice: ");
            userChoice = sc.next();

            String ucConv = userChoice.toUpperCase();

            System.out.println("You Chose: " + userChoice);

            int cpuChoice = ra.nextInt(5) + 1;

            if ((cpuChoice == 1) && (((ucConv.equals("LIZARD"))) || ((ucConv.equals("SCISSORS"))))) {
                System.out.println("\n\nComputer chose Rock, You Lose");
            } else if ((cpuChoice == 1) && (((ucConv.equals("PAPER"))) || ((ucConv.equals("SPOCK"))))) {
                System.out.println("\n\nComputer chose Rock, You Win");
            } else if ((cpuChoice == 2) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("ROCK"))))) {
                System.out.println("\n\nComputer chose Paper, You Lose");
            } else if ((cpuChoice == 2) && (((ucConv.equals("SCISSORS"))) || ((ucConv.equals("LIZARD"))))) {
                System.out.println("\n\nComputer chose Paper, You Win");
            } else if ((cpuChoice == 3) && (((ucConv.equals("LIZARD"))) || ((ucConv.equals("PAPER"))))) {
                System.out.println("\n\nComputer chose Scissors, You Lose");
            } else if ((cpuChoice == 3) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("ROCK"))))) {
                System.out.println("\n\nComputer chose Scissors, You Win");
            } else if ((cpuChoice == 4) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("PAPER"))))) {
                System.out.println("\n\nComputer chose Lizard, You Lose");
            } else if ((cpuChoice == 4) && (((ucConv.equals("SCISSORS"))) || ((ucConv.equals("ROCK"))))) {
                System.out.println("\n\nComputer chose Lizard, You Win");
            } else if ((cpuChoice == 5) && (((ucConv.equals("ROCK"))) || ((ucConv.equals("SCISSORS"))))) {
                System.out.println("\n\nComputer chose Spock, You Lose");
            } else if ((cpuChoice == 5) && (((ucConv.equals("PAPER"))) || ((ucConv.equals("LIZARD"))))) {
                System.out.println("\n\nComputer chose Spock, You Win");
            } else if ((cpuChoice == 1) && (ucConv.equals("ROCK"))) {
                System.out.println("\n\nComputer chose Rock also, Draw");
            } else if ((cpuChoice == 2) && (ucConv.equals("PAPER"))) {
                System.out.println("\n\nComputer chose Paper also, Draw");
            } else if ((cpuChoice == 3) && (ucConv.equals("SCISSORS"))) {
                System.out.println("\n\nComputer chose Scissors also, Draw");
            } else if ((cpuChoice == 4) && (ucConv.equals("LIZARD"))) {
                System.out.println("\n\nComputer chose Lizard also, Draw");
            } else if ((cpuChoice == 5) && (ucConv.equals("SPOCK"))) {
                System.out.println("\n\nComputer chose Spock also, Draw");
            }
            System.out.println("\n\n Would you like to play again? y/n");
            goAgain = sc.next().charAt(0) == 'y';
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

做一会儿行不通

来自分类Dev

做一会儿行不通

来自分类Dev

一会儿循环和“ this”对象

来自分类Dev

一会儿循环和“ this”对象

来自分类Dev

暂停一会儿循环

来自分类Dev

可以在scala中使用一会儿循环并产生收益

来自分类Dev

是否可以使用pytest测试一会儿True循环(我尝试超时)?

来自分类Dev

Python:如何暂停True循环一会儿?

来自分类Dev

一会儿循环条件的同步块

来自分类Dev

防止闪亮的应用中断一会儿循环

来自分类Dev

如何在适当的位置停止一会儿循环?

来自分类Dev

异常发生后继续一会儿循环

来自分类Dev

我的程序在做一会儿循环

来自分类Dev

继续一会儿循环直到EOF(Qt)

来自分类Dev

一会儿循环后左尖括号在bash中意味着什么?

来自分类Dev

过一会儿无法打开FXML

来自分类Dev

过一会儿无法打开FXML

来自分类Dev

一会儿后无法到达的陈述

来自分类Dev

当计数器达到一定数量时停止一会儿循环

来自分类Dev

打破一会儿循环,一口气切换

来自分类Dev

您可以从循环外部中断一会儿循环吗?

来自分类Dev

是否可以暂停一会儿循环直到动画结束?

来自分类Dev

为什么在做一会儿时用“ mov $ 1,%edx”代替“ mov $ 0,%edx”

来自分类Dev

为什么过一会儿在Mac上我停止接收OSC消息?

来自分类Dev

我的代码有什么问题?做一会儿然后尝试赶上

来自分类Dev

为什么 spd-say 在命令行中过一会儿就停止说话?

来自分类Dev

使用一会儿(x)

来自分类Dev

使用一会儿(x)

来自分类Dev

在C中经过一段时间后如何停止一会儿循环