【问题标题】:Loops and operations循环和操作
【发布时间】:2012-06-01 01:16:28
【问题描述】:

我很难理解这是什么!在这个while循环中。我知道它会反转布尔值,但这如何导致循环退出?如果它是假的,那么它就会把它变成真的,如果它是真的,那么它就会把它变成假的?

            String userChoice;
            do
            {

                userChoice = select.promptChoice();


            } while ( !select.isValidChoice(action ) );

【问题讨论】:

    标签: java operators while-loop boolean


    【解决方案1】:

    意思是“不”。在这种情况下,它表示“NOT is valid choice”,或者用英语表示“is not a valid choice”。

    这种情况下的循环将继续提示用户,直到选择有效为止。

    !用于简单地说NOT,在您的特定情况下,它与说isValidChoice == false相同,您应该尝试用简单的英语来思考这些事情,以便更好地理解它们。

    话虽如此,您不需要使用 !如果听起来不自然。这是一个使用 ! 听起来很自然的例子。

    bool happy = true;
    
    if(!happy)
    {
       cry();
    }
    
    else
    {
       smile();
    }
    

    这取决于什么最适合您的代码,如果听起来自然使用!然后使用它,否则不要。

    编辑:无论哪种情况,如果结果为FALSE,循环都会中断。这 !没有直接改变你的布尔值。

    【讨论】:

    • 我想我现在明白了,因为你的样本。所以基本上它并没有改变布尔值,而是询问返回的内容是否为假?
    • 不,它并没有真正改变它正在检查的布尔值是否相反。但这一切都取决于您如何措辞布尔变量。如果你说 !isDead 这意味着它还活着。我通常用积极的含义来表达我的布尔值,我会说 !isAlive 表示它已经死了。但这只是我的意见,可能会因您的要求而异。
    【解决方案2】:

    循环继续,直到action 成为有效选择。

    也就是说,代码示例没有显示对action 的任何更改。

    【讨论】:

    • 由一个方法处理,它将返回一个字符串到一个布尔值,该布尔值将检查用户是否做出了有效的选择,然后该布尔值将返回 true 或 false。
    【解决方案3】:

    循环转换为:如果选择无效,则再次要求用户输入。

    循环在选择有效时退出,这是循环中的条件的否定(不有效无效有效)。

    【讨论】:

    • 它是一个布尔值这一事实是否已经确定了这一点。因此,如果 isValidChoice 返回 false,则无效,如果返回 true,则无效。 NOT 的目的是什么?
    • while 表示您在条件为真时重复该操作。如果去掉条件,那么当用户输入无效时循环将退出,当用户输入有效时继续询问用户输入,这是不正确的。您想提示用户,直到输入有效。
    【解决方案4】:

    英文:

    select.isValueChoice(action) 返回false (!true) 时做userChoice = select.promptChoice();

    ! 的原因是当isValidChoice 返回true 时循环退出。

    【讨论】:

    • 它是一个布尔值这一事实是否已经确定了这一点。因此,如果 isValidChoice 返回 false,则无效,如果返回 true,则无效。 NOT 的目的是什么?
    • while 的使用意味着查询一个布尔值,while 只会在该值为 true 时继续。
    • 这里使用NOT是为了否定返回的false值,这样while可以一直持续到方法返回true(!true == false所以while会退出)。
    • 对,所以如果 isValidChoice 返回 true,则 !会把它变成假的,导致循环永远不会退出,对吗?
    • 不,当 true 从 isValidChoice 返回时,它将被否定并变为 false 并且循环将退出。如果 isValidChoice 总是返回false,它将永远不会退出,因为!falsetrue
    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多