Java 扑克骰子游戏,我不';我不知道为什么我的方法会出错 publicstaticvoidmain(字符串[]args){ Scanner inScanner=新扫描仪(System.in); int[]骰子=新的int[5]; 重设骰子(骰子); System.out.print(“您当前的骰子:+dice”); 掷骰子; 系统输出打印(骰子); System.out.println(); promptForReroll(骰子、扫描); System.out.println(“重新滚动…”); 掷骰子; System.out.println(“你最后的骰子:+dice”); System.out.println(getResult(dice)+“!”; } 私有静态无效重置骰子(int[]骰子){ 整数长度=5; for(int i=0;i

Java 扑克骰子游戏,我不';我不知道为什么我的方法会出错 publicstaticvoidmain(字符串[]args){ Scanner inScanner=新扫描仪(System.in); int[]骰子=新的int[5]; 重设骰子(骰子); System.out.print(“您当前的骰子:+dice”); 掷骰子; 系统输出打印(骰子); System.out.println(); promptForReroll(骰子、扫描); System.out.println(“重新滚动…”); 掷骰子; System.out.println(“你最后的骰子:+dice”); System.out.println(getResult(dice)+“!”; } 私有静态无效重置骰子(int[]骰子){ 整数长度=5; for(int i=0;i,java,Java,如果用户的输入不是“Y”或“N”,则不会返回任何内容。您需要添加或案例: 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);

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

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;
}
理想情况下,您应该对输入进行某种格式化和预验证,比如在比较之前强制输入大写

getResult
上,您没有返回任何内容。在函数体之前添加一个
return
。但这不会解决问题,因为
getValue
的返回类型与
getResult
不匹配。您正在尝试将int数组作为字符串返回


将来,请包括您收到的实际错误消息。

对于PromptForPlay,我需要添加什么?在我的getResult方法上,我需要返回什么?@osubucs28对于这两种方法,这取决于您。首先,您需要决定如何处理错误输入;您不能假设用户总是输入正确的输入。下面是最简单的方法是向循环内部的用户请求输入,并在验证输入后才退出循环。对于
getResult
,我不能说,因为我不理解您的意图。您试图用
getResult
实现什么?它应该返回字符串还是int数组?该方法应该计算array并返回给调用程序一个包含骰子数组分数的字符串。这就是我需要getResult方法所做的。@osubucs28但在您的原始代码中,
getValue
返回一个int数组,但您从未使用过它。如果要使用
getValue
的结果,您需要实际返回它,一个d将数组格式化为字符串。除非字符串仅用于视觉目的,否则这可能不是传递信息的最佳方式,因为您稍后需要再次解析它。那么我是否需要getResult方法?您至少应该告诉我们错误是什么。对于我的getResult方法,它说“此方法必须返回字符串类型的结果”
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. 
    }
}