4

我正在尝试调试分配的一部分代码(我对 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"));
}

我总是收到输入字符串的重复局部变量错误。

任何帮助将不胜感激!

4

6 回答 6

13

代替

String input = keyboard.next();

input = keyboard.next();

如果你String在变量名前加上a,它就是一个声明。而且你只能在一个范围内声明一个变量名一次。

于 2012-08-06T07:12:00.360 回答
5

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

String input = keyboard.next();

对此:

input = keyboard.next();

此外,此代码很可能不起作用:

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

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

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

需要改成这样:

((!input.equals("a")) || (!input.equals("b")))
于 2012-08-06T07:12:46.967 回答
1

Yoy重复了String input声明。一次就够了。

于 2012-08-06T07:11:16.757 回答
0

您已input两次声明该变量。在main方法内部input只声明一次。在里面使用以下代码do {}

input = keyboard.next(); instead of  String input = keyboard.next();
于 2012-08-06T07:17:24.730 回答
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();

于 2012-08-06T07:12:05.540 回答
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"));
}
于 2012-08-06T07:27:14.260 回答