【问题标题】:Return and break statement errorreturn 和 break 语句错误
【发布时间】:2013-11-25 11:29:07
【问题描述】:

我在 android 中的一个编程语句遇到问题,它一直给我标签 230 丢失的错误,但我不知道做错了什么。任何帮助将不胜感激。

这是下面的程序;

public static void calculateGPA()
  {
    totalHours = 0.0D;
    totalValue = 0.0D;
    int i = 0;
    if (i >= 8)
    {
      Object[] arrayOfObject = new Object[1];
      arrayOfObject[0] = Double.valueOf(totalValue / totalHours);
      GPA = String.format("%.2f", arrayOfObject);
      if (!GPA.equals("NaN"))
        break label230;
      GPA = "0.00";
    }
    while (true)
    {
      return;
      int j = collegeGradeSpinner[i].getSelectedItemPosition();
      int k = collegeHourSpinner[i].getSelectedItemPosition();
      if ((j != 0) && (k != 0))
        switch (j)
        {
        default:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        }
      while (true)
      {
        i++;
        break;
        totalValue += k * 4;
        totalHours += k;
        continue;
        totalValue += k * 3;
        totalHours += k;
        continue;
        totalValue += k * 2;
        totalHours += k;
        continue;
        totalValue += k * 1;
        totalHours += k;
        continue;
        totalHours += k;
      }
      label230: gpaTextView.setText(GPA);
    }
  }

【问题讨论】:

  • 您的标签存在于封闭块内。你不能“闯入”这个块:阅读这个stackoverflow.com/questions/8802287/…
  • 此代码是否是通过工具生成的,因为您的代码中有很多地方可以改进。例如GPA 的计算可以简单地完成如下 GPA = String.toString(Math.round(totalValue/totalHours, 2));根据您的要求,这可以以更简单的方式完成

标签: java android return break


【解决方案1】:

由于其语言结构,Java 没有直接转到。如果有的话,直接 goto 很容易变得不可读和不可维护。

您可以使用 for 或 while 循环将标签标记为 labelname:for(...,并使用 break labelnamecontinue labelname 分别退出或开始循环的下一次迭代。

【讨论】:

    【解决方案2】:

    break 只能退出你当前所在的循环。它不能用于从 A 点到任意 B 点。

    【讨论】:

      【解决方案3】:

      在 Java 中,您不能将 break 用作 goto 并随意跳转,尤其是不要进入循环。

      【讨论】:

        【解决方案4】:

        虽然这不是一个好习惯,但您可以使用 java 块实现您的要求,如下所示

        label230: {
           if(i >= 8) {
             .....
             if(!GPA.equls("NaN") {
               break label230;/* Once you break here, it will take you out of the block*/
             }
             ....
             while(true) {
              ....
             }
           }
        }// label230 block ends.
        gpaTextView.setText(GPA);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-05
          • 2011-03-12
          • 2013-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-05
          相关资源
          最近更新 更多