当前位置: 首页 > 知识库问答 >
问题:

为什么我输入的每一个输入都忽略While循环?

曹鸿风
2023-03-14
package rockPaperScissors;
import java.util.*

public class RockPaperScissors {
    public static final int quit = 0;
    public static final int rock = 1;
    public static final int paper = 2;
    public static final int scissors = 3;
    static Scanner console = new Scanner(System.in);

public static void main(String [] args) {
    //gets userHand from user as int
    int userHand = promptUserForHand();
    while(userHand != quit) {
        //gets computerHand from the computer(random) as int
        int computerHand = generateRandomHand();
        //compares userHand to computerHand, determines the winner
        String winner = determineWinner(userHand, computerHand);
        //prints out the winner
        System.out.println("The winner is the: " + winner);
        //starts the next round
        userHand = promptUserForHand();
    }
    //if userHand equals quit, stop program and say goodbye
    if(userHand == quit) {
        System.out.println("Goodbye!!!");
        console.close();        
    }
}

public static int promptUserForHand() {
    //gets userInput from user
    System.out.println("Please input either rock, paper, scissors (or enter quit to stop)");
    String userInput = console.next(); 
    //converts String into int, so userHand and computerHand can be compared
    int userHand = 0;
    if(userInput == "rock" || userInput == "Rock" || userInput == "r") {
        userHand  = rock;
    }
    else if(userInput == "paper" || userInput == "Paper" || userInput == "p") {
        userHand = paper;
    }
    else if(userInput == "scissors" || userInput == "Scissors" || userInput == "s"){
        userHand = scissors;
    }
    else {
        userHand = quit;
    }
    return userHand;
}

//generates computerHand from computer(randomly chooses either rock(1), paper(2), or scissors(3))
public static int generateRandomHand() {
    Random r = new Random();
    int computerHand = r.nextInt(4) + 1;
    return computerHand;
}

//compares userHand to computerHand to determine the winner
public static String determineWinner(int userHand, int computerHand) {
    String winner = " ";
    if(userHand == 1 && computerHand == 2) {
        winner = "Computer!!!";
    }
    else if(userHand == 1 && computerHand == 3) {
        winner = "User!!!";
    }
    else if(userHand == 2 && computerHand == 1) {
        winner = "User!!!";
    }
    else if(userHand == 2 && computerHand == 3) {
        winner = "Computer!!!";
    }
    else if(userHand == 3 && computerHand == 1) {
        winner = "Computer!!!";
    }
    else if(userHand == 3 && computerHand == 2) {
        winner = "User!!!";
    }
    else {
        winner = "Tie!!!";
    }       
    return winner;
}

共有1个答案

钦海荣
2023-03-14

在Java中,不应该使用==来比较字符串。请使用:equals()equalsignorecase()方法。

例如:

而不是:

 if(userInput == "rock" || userInput == "Rock" || userInput == "r") 
if(userInput.equalsIgnoreCase("rock") || userInput.equalsIgnoreCase("r"))
 类似资料:
  • 注:据我所知,该问题不是以下问题的重复问题: HTML5:为什么我的“oninvalid”属性让模式失败 HTML5表单必需属性。设置自定义验证消息 如何更改或删除HTML5表单验证默认错误消息 给定一个字段: 为验证设置了属性,例如对于4个字符的十六进制字符串输入设置了 下面是一个示例,说明了这一点: 验证工作几乎与预期一样,除非用户输入无效条目,然后继续尝试并编辑它,其以下输入状态仍然无效:

  • null 对于第二个选项,我使用MessageHandler: 每当我的模型(函数)返回适当的标记时,我想输入其中一个ConversationHandlers,但不知道如何执行。

  • 我在编程一个订单提交页面时遇到了一个相当大的问题,该页面的目的是提交一个订单的争议--提供两个字段被填写,但只有当一个字段少于另一个字段时。 基本上,一个是下拉,另一个是争端框,查询如下: 如果DispotestExtBox=“”而下拉框=“请选择...” 一切正常-提交按钮已启用 如果DisportestExtBox!=“”而下拉框=“请选择...” 错误(反之亦然,因此如果填充了Dispone

  • 问题内容: 每次我尝试将任何内容推送到GitHub时,它都会询问我地址,然后它要求密码。有没有办法使它自动化? 我正在使用Linux Ubuntu。 问题答案: 您可以用来记住密码(通常,Gnome会自动为您运行密码)。 从现在开始,在您运行此程序的终端中,您的密码将被记住。 理想情况下,它会自动运行,因此在gnome中运行的所有shell都可以工作。查看Gnome Keyring 。

  • 问题内容: 我想做的是请用户输入一些字符串以读入数组,然后要求用户输入该数量的字符串并将其读入数组。当我运行此代码时,它从不要求我在第一个for循环的第一个循环中输入内容,只打印出“字符串#0:字符串#1:”,然后我就可以输入文本了。为什么会这样,我做错了什么? 问题答案: 缓冲。 输入输入数量时,不会在输入缓冲区中占用换行符的位置。在for循环的迭代0中,缓冲区中已经有一行输入,并且可以立即完成

  • 我正在设置一个,它在用户输入整数之前一直执行。但是,按照我现在的方式,循环在输入整数后再次打印消息,然后程序正常执行。有人能建议一种方法来使输入整数后不再打印该消息吗?谢了!