我的代码出了什么问题?我正在尝试请求提示用户输入一个数字(如果它不在1到6之间)或一个数字应该说无效并提示另一个尝试。用户可能只有3次尝试。
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] numbers = new int[6];
System.out.println("Enter a number on a die from 1-6:");
String dieinput = input.next();
int invalidcount = 0;
System.out.println("Your number is: " + dieinput);
do{
try
{
// the String to int conversion
int dienum = Integer.parseInt(dieinput.trim());
int dienumOE = 0;
int count=0;
//test number input
if ((dienum >= 1) && (dienum<= 6))
System.out.println("number is " + dienum + oddoreven(dienum));
else
System.out.println("Invalid number, please enter a number 1-6");
count++;
System.out.println("Count" + count);
}
catch (NumberFormatException nfe){
System.out.println("Invalid number, please enter a number 1-6");
System.out.println("Count" + count);
}
while (count <= 3 && count >=0);
}
}
// Check if odd or even
public static String oddoreven(int num) {
String result;
if (num % 2 == 0)
result = "even";
else
result = "odd";
return result;
}
}
答案 0 :(得分:2)
您的问题是“错误的”范围:您不能在尝试块范围内声明的 catch 块中使用变量!
换句话说;你需要:
int counter = 0;
try { ...
} catch (...
如果您想在中使用计数器尝试和捕获!
“规则”非常简单:一个变量只能看到}才能关闭它所在的“块”。
这会阻止您实际编译代码!
所以,这里的真正的课程更像是:不要向编写100行代码然后运行编译器。只写尽可能少的行 - 每次你想:这是“足够”编译..然后编译。然后修复报告给您的错误。 java编译器非常擅长为您提供特定的消息,告诉您您做错了什么;但你提出的更多凌乱的代码,越难获得!
并且为了记录:SO不是一个“远程”编译器服务,您应该使用它来编译乱码!