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