扑克骰子游戏,我不知道为什么我的方法有错误

时间:2015-11-09 04:03:39

标签: java

public static void main(String[] args) {
    Scanner inScanner = new Scanner(System.in);   
    int[] dice = new int[5];
    resetDice(dice);
    System.out.print("Your current dice: + dice");
    rollDice(dice);
    System.out.print(dice);
    System.out.println();
    promptForReroll(dice, inScanner);
    System.out.println("Rerolling...");
    rollDice(dice);
    System.out.println("Your final dice: + dice");
    System.out.println(getResult(dice)+"!");      
}

private static void resetDice(int[] dice) {
    int length = 5;
    for(int i = 0; i < length; i++){
        dice[i] = 0;
    }
}

private static void rollDice(int[] dice) {
    int i = 0;
    int length = 5;

    while(i < length) {
        if(dice[i] == 0) {
            int roll = (int)(Math.random()*6)+1;
            dice[i] = roll;
            i++;
        }
    }
}

private static String diceToString(int[] dice) {
    String diceToString =("Your current dice: " +dice[0]+", " +dice[1]+ ", " +dice[2]+ ", " +dice[3]+ ", " +dice[4]);
    return diceToString;    
}

private static void promptForReroll(int[] dice, Scanner inScanner) {
    System.out.print("Select a die to re-roll (-1 to keep remaining dice): ");
    int selection = inScanner.nextInt();
    while(selection != -1){
        if(selection > 4 || selection < -1){
            System.out.println("Erorr: Index must be between 0 and 4 (-1 to quit)!");
        }
        else{
            dice[selection] = 0;
        }
        System.out.println("Your current dice: " + dice);
        System.out.print("Select a die to re-roll (-1 to keep remaining dice): ");
        selection = inScanner.nextInt();
    }
    System.out.println("Keeping remaining die...");
}

private static boolean promptForPlayAgain(Scanner inScanner) {
    System.out.println("Would you like to play again?(Y or N)");
    String play = inScanner.nextLine();
    if(play=="Y"){
        return true;
    }
    else if(play=="N"){
        return false;
    }
}

private static String getResult(int[] dice) {
    getCounts(dice);
}

private static int[] getCounts(int[] dice) {
    int[] count = new int[6];
    int i = 0;
    int j = 0;
    while(i<5){
        while(j<5){
            if(dice[i] == (j+1)){
                count[j]++;
                i++;
            }       
            else{
                i++;
            }
            j++;
        }
    }
    return count;
}

我已经写出了编码,我认为大部分内容可能是正确的,但我无法运行它,因为它在我的promptForPlayAgain方法和我的{{1}上有错误} 方法。我不知道为什么会有错误。

1 个答案:

答案 0 :(得分:0)

如果用户的输入不是"Y""N",则您不会返回任何内容。您需要添加else案例:

private static Boolean promptForPlayAgain(Scanner inScanner) {
    System.out.println("Would you like to play again?(Y or N)");
    String play = inScanner.nextLine();
    if(play=="Y"){
        return true;
    }
    else if(play=="N"){
        return false;
    }
    else
    {
        //Do something here to handle bad input. 
    }
}

理想情况下,您应该对输入进行某种格式化和预验证,例如在比较之前将输入强制为大写。

getResult上,你不会返回任何内容。在函数体前添加return。但是,由于getValue的返回类型与getResult不匹配,因此无法解决问题。您尝试将int数组作为字符串返回。

将来,请提供您收到的实际错误消息。