【问题标题】:Java: Other possible forms for return statementJava:return 语句的其他可能形式
【发布时间】:2015-02-11 00:23:52
【问题描述】:

假设我想返回tos = tos-2,那么如何修改代码呢?

int pop() {
    System.out.print("tos   = " +tos+"  ");
    if (tos<0) {
        System.out.println("Stack limit reached .. UNDERFLOW");
        return 0;}
    else {
        return stck[tos--]; 
    }
}

【问题讨论】:

  • else { tos-=2 return stck[tos]; }
  • 你到底想返回什么?
  • tos-=2;返回stck[]tos; // 这不起作用
  • 就像 Mureinik 提到的,在表达式中使用后缀运算符是自找麻烦。
  • 保持代码清晰易读很重要。通常最好有一些额外的代码行,而不是一些难以阅读和容易出错的行

标签: java return postfix-operator


【解决方案1】:

Java 没有一元“减二”运算符,因此您必须将其分成两行:

tos -= 2;
return stck[tos + 2];

或者使用临时值来提高可读性:

tos -= 2;
int returnIndex = tos + 2;
return stck[returnIndex];

【讨论】:

  • 如果使用后增量会返回错误的东西
  • @akxlr 这就是我讨厌后缀运算符的原因...已修复。感谢您的关注。
【解决方案2】:

如果您想返回tos 更改之前的数组位置(类似于return stck[tos--] 所做的):

tos-=2;
return stck[tos+2];

否则,

tos-=2;
return stck[tos];

【讨论】:

    【解决方案3】:
    int pop(){
        System.out.print("tos   = " +tos+"  ");
        if (tos<0) {
            System.out.println("Stack limit reached .. UNDERFLOW");
            return 0;
        }
        else {
            tos = tos-2;
            return stck[tos];
        }
    }
    

    【讨论】:

    • 请在您的答案中添加简单的英文解释。
    【解决方案4】:

    停止使用后缀。 :D

    int pop() {
            int tos = 2;//3
    
            System.out.print("tos   = " + tos + "  ");
            if (tos < 0) {
                System.out.println("Stack limit reached .. UNDERFLOW");
                return 0;
            } 
    
            return stck[tos-=2];
        }
    

    【讨论】:

      【解决方案5】:
      int pop(){
      
          System.out.print("tos   = " +tos+"  ");
          if (tos<0) {
              System.out.println("Stack limit reached .. UNDERFLOW");
              return 0;
          }
          else {
              tos -=2;
              return stck[tos];
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        • 2021-12-18
        • 1970-01-01
        相关资源
        最近更新 更多