当前位置: 首页 > 面试题库 >

断断续续的陈述

卫宁
2023-03-14
问题内容

所以我有一个先前的问题,但意识到我发布了错误的违规代码。我在下面标记了令人反感的陈述。

我正在尝试使用该switch语句为每个运算符设置优先级。

也许有人可以指出我正确的方向。

请注意,我正在运行JAVA 7,因此String Switch可以工作。

opType.java

import java.io.*;

public final class opType {

   public static opType ADD = new opType( "Add" );
   public static opType SUB = new opType( "Sub" );
   public static opType MULT = new opType( "Mult" );
   public static opType DIV = new opType( "Div" );
   public static opType MOD = new opType( "Mod" );
   public static opType LPAR = new opType( "LParen" );
   public static opType RPAR = new opType( "RParen" );

   protected String name;

   private opType( String n )
   {
      name = n;
   }

   public String getName()
   {
      return name;
   }

Operator.java

public class Operator extends Token {

    protected opType val;

    public boolean isOperator() { return true; }
    public boolean isOperand() { return false; }

    protected int getPrec()
    {

        switch(val.getName())
        {
            case "LParen": 
            {
                return 0;
                break; //unreachable
            }

            case "RParen": 
            {
                return 0;
                break; //unreachable
            }

            case "Mult":
            {
                return 1;
                break; //unreachable
            }
            case "Div": 
            {   
                return 1;
                break; //unreachable
            }
            case "Mod": 
            {   
                return 1;
                break; //unreachable
            }
            case "Add": 
            {   
                return 2;
                break; //unreachable
            }
            case "Sub": 
            {   
                return 2;
                break; //unreachable
            }
        }

            return 0;
    }

    public static int compare( Operator a, Operator b )
    {
        if( a.getPrec() == b.getPrec() )
            return 0;
        else if( a.getPrec() < b.getPrec() )
            return -1;
        else
            return 1;
    }

    public opType getVal() { return val; }

    public Operator( opType v ) { val = v; }

}

问题答案:

如果您放置了return,则该函数会在break执行之前返回,因此break将永远无法达到。

相反,您可以使用设置为所需值的变量,并在开关返回后将其返回。或者只是摆脱break声明。



 类似资料:
  • 我们使用AWS为我们的网站存储aduio/视频内容。 我们使用罐装政策提供签名cookie:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-canned-policy.html 因此,我们为每个请求设置了3个cookie来检索数据: 它用于

  • 本文向大家介绍Java嵌套中断/继续,包括了Java嵌套中断/继续的使用技巧和注意事项,需要的朋友参考一下 示例 这是可能的break/continue到外环使用标签声明: Java中的标签没有其他用途。

  • 问题内容: 我知道上面的脚本不起作用。因此,如果需要将带有break的函数或继续放入循环,该如何写? 问题答案: 一个函数不能导致中断或继续调用它的代码。中断/继续实际上必须出现在循环内。您的选择是: 从funcA返回一个值并使用它来决定是否中断 在funcA中引发异常并将其捕获在调用代码中(或调用链中更高的位置) 写一个生成器来封装中断逻辑,然后在生成器上进行迭代 通过#3我的意思是这样的: 这

  • 我在单元测试中使用groovy脚本。我有以下代码片段,我在单个测试脚本中使用多个断言。 第一个断言失败并停止执行。但我想继续进一步的代码片段。 与selenium中的软断言类似,我应该如何收集groovy中的所有失败异常。

  • 我的任务是通过Sustainsys(Kentor)库为我目前正在进行的项目设置SAML 2.0单点登录。这是我一直遵循的文档。该网站是一个webforms应用程序,因此我使用Sustainsys库的HTTPModule部分。我已将IDP(Okta)配置为将SAML2.0断言发送到文档中声明endpoint为/SAML或/SAML/Acs的网站。该网站是Kentico CMS网站,CMS提供了一个A