错误:重复的局部变量

时间:2015-12-21 19:41:47

标签: java variables scope

  int wmath1 = 1;
  do {
    if (wmath.equals(add)) {
      System.out.print(5 + 5);
    } else if (wmath.equals(sub)) {
      System.out.println(6 - 2);
    } else {
      System.out.println("sorry but that not an option");
      int wmath1 = 0;
    }
  } while (wmath1 < 1);
}

我正在尝试创建一个循环,如果用户没有选择任何给定的选项,那么循环将再次发生,这样他就可以选择一个给定的选项,而无需重新执行该程序。

然而,当我首先分配wmath = 1时,如果else语句没有运行,那么应该允许循环结束但是它给了我wmath1被重用的错误,即使它应该让你重命名变量。

上面的代码只是代码的do while循环部分。扫描仪部件名称wmath未给出。

3 个答案:

答案 0 :(得分:1)

你不应该在循环中重新声明wmath1。只需更新循环之前声明的变量值。

更改

int wmath1 = 0;

wmath1 = 0;

答案 1 :(得分:0)

首先,正如其他评论所指出的那样,你不应该在if块中重新声明wmath

您的代码还有另一个问题。如果用户在第一次尝试中没有选择任何选项但在第二次尝试中选择addsub,该怎么办? do-while循环仍将运行,不幸的是,永远。

答案 2 :(得分:0)

正如其他人对你说的那样,你不能重新宣布wmath只需要重估它 在这里你得到了我解决它的方式:

 Scanner sc= new Scanner(System.in);
    int wmath = sc.nextInt();
    boolean ok=false;
    do {

        if (wmath==1) {
            ok=true;
            System.out.print(5 + 5);
        } else if (wmath==2) {
            ok=true;
            System.out.println(6 - 2);
        } else {
            System.out.println("sorry but that not an option");
        //here you have to change the value of wmath by the value that user insert
            wmath = sc.nextInt();
        }
    } while (ok==false);