Java错误,重复的局部变量

时间:2012-08-06 07:09:19

标签: java variables duplicates local

我正在尝试为一项任务调试一部分代码(我还是Java的新手)并且已经通过很多资源来解决这个冲突,但仍然无法完成它。

public static void main(String [] args){
    Scanner keyboard = new Scanner(System.in);
    String input = null;
    do
    {
      System.out.println("Enter 'A' for option A or 'B' for option B.");
      String input = keyboard.next();
      input.toLowerCase();
      input.charAt(0);  
    }
    while ((input != "a") || (input != "b"));
}

我总是在输入字符串中出现重复的局部变量错误。

非常感谢任何帮助!

6 个答案:

答案 0 :(得分:12)

替换

String input = keyboard.next();

input = keyboard.next();

如果在变量名之前加上String,则它是一个声明。并且您可以在范围中仅声明变量名称一次。

答案 1 :(得分:4)

您已将input变量声明两次。您需要更改此行:

String input = keyboard.next();

到此:

input = keyboard.next();

此外,此代码很可能无效:

((input != "a") || (input != "b"))

在Java中,使用.equals()方法比较字符串,所以这一行:

((input != "a") || (input != "b"))

需要更改为:

((!input.equals("a")) || (!input.equals("b")))

答案 2 :(得分:1)

您已复制String input声明。一次就够了。

答案 3 :(得分:0)

public static void main(String [] args){
    Scanner keyboard = new Scanner(System.in);
    String input = null;
    do
    {
      System.out.println("Enter 'A' for option A or 'B' for option B.");
      input = keyboard.next();
      input.toLowerCase();
      input.charAt(0);  
    }
    while ((input != "a") || (input != "b"));
}

问题是您是否再次在do{}内声明输入。 所以它应该只是

input=keyboard.next();

答案 4 :(得分:0)

您已将input变量声明两次。 main方法内部仅声明input一次。在do {}

中使用以下代码
input = keyboard.next(); instead of  String input = keyboard.next();

答案 5 :(得分:0)

据我所知,这不是隐藏变量的方式。

这就是我的意思

private static String input = null;    
public static void main(String [] args){
    Scanner keyboard = new Scanner(System.in);
    do
    {
      System.out.println("Enter 'A' for option A or 'B' for option B.");
      String input = keyboard.next();
      input.toLowerCase();
      input.charAt(0);  
    }
    while ((input != "a") || (input != "b"));
}