来自给定列表的用户输入,包含String和Int的混合

时间:2014-11-05 13:41:55

标签: java string input int

我正在尝试使用Java,而且还没有接受过正式的培训。我从某个地方的某个课程中选择了一个作业,并认为我会尝试一下。到目前为止,一切进展顺利,但我需要让用户输入一个来自给定列表的选择。我没有处理字符串值的问题,但他们也可以选择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;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

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

这条线不会编译:

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;
    }
}