【问题标题】:User input from given list with mix of String and Int来自给定列表的用户输入,混合了 String 和 Int
【发布时间】:2015-01-01 17:34:26
【问题描述】:

我正在尝试使用 Java,但根本没有接受过正式培训。我从某个地方的一门课程中找到了一个作业,并认为我会尝试一下。到目前为止一切都很顺利,除了我需要让用户进行输入,该输入是从给定列表中选择的。我在处理 String 值方面没有任何问题,但他们也可以选择从 0-39 中选择一个数字,我希望将其存储为 int。

任何帮助将不胜感激。

import java.util.Scanner;

public class RouletteGame {

    static Player p1;
    public static void main(String[] args){

        Scanner scan = new Scanner(System.in);
        int num = (int)(Math.random()*37);
        int winnings = 0;
        int x = 0;
        int counter = 1;
        int p  = 1;
        String name;
        String choice;
        int iAmount = 100;
        int betNum;

        System.out.println("Welcome to Cache Creek style Rouylette..bet an amount and type");
        System.out.println("    if you select the correct colour, you win double your bet");
        System.out.println("    if you select the correct odd/even, you win double your bet");
        System.out.println("    if you select the correct number, you win 40 times your bet");
        System.out.println("    otherwise you lose your bet");
        System.out.println("If you lose all your money, the game is over");
        System.out.println();
        System.out.print("How much do you want to bet? $");
        int bet=scan.nextInt();

        while (x==0){
            Scanner scann = new Scanner(System.in);
            System.out.println("What is your bet? (odd/even/red/black/exact number)");
            choice=scann.nextLine();
            }

            if  (choice.equals("odd")){
                System.out.println("You have selected odd.");
                x=1;
                }
                else if (choice.equals("even")){
                        System.out.println("You have selected even.");
                        x=1;
                }
                else if (choice.equals("red")){
                        System.out.println("You have selected red.");
                        x=1;
                }
                else if (choice.equals("black")){
                        System.out.println("You have selected black.");
                        x=1;
                }
                else if (choice.equals(int)){
                    betNum = Integer.parseInt(choice);
                    System.out.println("You have selected " +betNum);
                    x=1;
            }
                else{
                    System.out.println("Invalid value: Must be odd, even, red, black or a number between 0 and 39");
                    x=0;
            }
        }
    }
}

【问题讨论】:

标签: java string input int


【解决方案1】:

问题是你不知道给定的答案是字符串还是整数。

此行无法编译:

else if (choice.equals(int)) {

相反,创建一个新方法isInteger(String s),如this one,并在上面一行的位置调用它,如下所示:

else if (isInteger(choice)) {
    betNum = Integer.parseInt(choice);
    if (betNum >= 0 && betNum <=39) {
       System.out.println("You have selected " +betNum);
       x = 1; //by the way, you can set x to be a boolean variable
    } else { //betNum not a valid Roulete number
       System.out.println("Invalid value: Must be odd, even, red, black or a number between 0 and 39");
       x=0;
    }
}

【讨论】:

  • 他们 x = 1 只是为了循环......它似乎正在做我想做的事情。
  • 你的回答完全有道理,但是当我运行时,它没有返回 println 中 betNum 的值
  • 也许你没有看到我的更新,你给了一个值 39 ?它打印什么?
  • 不,我包含了原始版本和更新版本。当我输入一个数字时,它会循环回到“你的赌注是什么?”
  • 是的,现在看来我编写的循环无论输入什么(例如,黑色、红色等)都不起作用
猜你喜欢
  • 2017-04-11
  • 2017-10-21
  • 2021-10-28
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多