【问题标题】:Error: Duplicate local variable错误:重复的局部变量
【发布时间】:2015-12-21 19:41:46
【问题描述】:
  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。

【问题讨论】:

  • 您的问题与本网站上已经提出的问题非常相似。下次请将您的部分或全部错误消息复制到 StackOverflow 的搜索中,看看您是否找到答案。下次还要在您的帖子中发布 EXACT 错误消息,因为这对于调试至关重要。

标签: java variables scope


【解决方案1】:

您不应该在循环内重新声明wmath1。只需更新您在循环之前声明的变量的值即可。

改变

int wmath1 = 0;

wmath1 = 0;

【讨论】:

    【解决方案2】:

    首先,正如其他 cmets 指出的那样,您不应该在 if 块内重新声明 wmath

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

    【讨论】:

      【解决方案3】:

      正如其他人对你说的那样,你不能重新声明 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);
      

      【讨论】:

        猜你喜欢
        • 2012-08-03
        • 2016-10-09
        • 2013-03-12
        • 1970-01-01
        • 2016-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-09
        相关资源
        最近更新 更多