Java 检查输入错误时未初始化变量

Java 检查输入错误时未初始化变量,java,initialization,Java,Initialization,因为我是计算机科学学校的,所以我对这个网站很陌生,并计划经常使用它。我试图在java中做一个错误检查,确保输入十六进制,但是我被告知字符串输入没有初始化 Scanner keyboard = new Scanner(System.in); String input; Pattern legalInput = Pattern.compile("a-fA-F0-9"); Matcher match = legalInput.matcher(input); boolean answer =

因为我是计算机科学学校的,所以我对这个网站很陌生,并计划经常使用它。我试图在java中做一个错误检查,确保输入十六进制,但是我被告知字符串输入没有初始化

Scanner keyboard = new Scanner(System.in);



String input;


Pattern legalInput = Pattern.compile("a-fA-F0-9");
Matcher match = legalInput.matcher(input);
boolean answer = match.find();
int counterA = 0;
while (counterA < 1) {
    System.out.print("Please enter a hex number:");
    input = keyboard.nextLine();
    int counter = 0;
    while (counter < 1) {

        if (answer == true )
            counter++;
        else System.out.println("Error");
        } counterA++;
    }
扫描仪键盘=新扫描仪(System.in);
字符串输入;
模式输入=模式编译(“a-fA-F0-9”);
匹配器匹配=合法输入匹配器(输入);
布尔答案=匹配。查找();
int计数器A=0;
while(a<1){
System.out.print(“请输入十六进制数字:”);
输入=键盘.nextLine();
int计数器=0;
while(计数器<1){
如果(答案==真)
计数器++;
else System.out.println(“错误”);
}计数器A++;
}

因为这是我学习的第一门编程语言,所以失去了所有的帮助

您无法使用尚未输入的内容分配
匹配器

String input;
Pattern legalInput = Pattern.compile("a-fA-F0-9");
// Matcher match = legalInput.matcher(input); // <-- input isn't set yet.

使字符串
input
等于某个值以初始化它

String input = null;

总是初始化你的变量,通过这个

在您的情况下,将输入初始化为null或默认值

例如:

 String input=null;
除此之外,请尝试关闭资源,因为它将导致
资源泄漏

 keyboard.close();

在使用方法局部变量之前,必须初始化它们。在您的情况下,请使用
input=null
 keyboard.close();