首页 > 解决方案 > while code, Method, Int 对布尔值的理解

问题描述

我正在审查一些大学作业的代码,我们已经获得了一些示例来帮助我们。我对下面正在做什么有点困惑,因为它使用赋值运算符而不是 .equals 或 == 方法。

如果我用 == 替换代码(并创建一个局部变量进行比较),代码将开始无限循环并显示默认值。

 int select = 0;
 
  do {
    
        switch (select) {
            case 1:
                Problem();
                break; 
            default:
            System.out.println("Invalid");
            break;
            } 

    } while ((select = getSelection()) !=3);

 public static int getSelection () { 
(Return function here with has.nextInt and scanner class to receive input)
}

根据我有限的理解,上面将“Select”分配给“getSelection”方法中的值,它还说明此时不接受 3 例如 System.exit0 的输入。

我理解正确了吗?

(根据要求提供更多示例)我会按照以下方式做一些事情:

int select = 0; 
int select1 = 0; 
    do {

    switch (select) {
        case 1:
            Problem();
            break; 
        default:
        System.out.println("Invalid");
        break;
        } 
 } while (select == select1);

我试图想出一个与讲师示例的逻辑等价物,但似乎无法在不破坏 while 循环的情况下做到这一点。

标签: javaloopsmethodswhile-loop

解决方案


在java中,(和其他“类似C”的语言)赋值的结果是赋值,即这个代码:

do {
    // other code
} while ((select = getSelection()) !=3)

是相同的:

do {
    // other code
    select = getSelection();
} while (select != 3)

这种风格,称为in-line conditional,通常被认为是要避免的风格。

它存在 checkstyle 违规 - 请参阅AvoidInlineConditionals


推荐阅读