循环澄清时的C ++

时间:2016-01-26 19:00:25

标签: c++ loops while-loop

这是我的while循环编码,我想要的是让程序询问用户是否要重新运行程序。应该输入(Y / N)。但是每次运行我的程序时,它都会不断运行main()函数,即使我输入了我的ans变量的N或n字符。任何帮助将不胜感激。

for i = 1:9
    exp = ['P\s*', num2str(i), '\s*(\S*)\s*(\S*)\s*(\S*)'];
    parts = regexp(txt,exp,'tokens')
    P{i} = [reshape(str2double([parts{:}]),3,[])]';
end

4 个答案:

答案 0 :(得分:2)

在你的while语句中," ||"意味着"或"。只要其中一个条件为真,while语句就会继续运行。你需要使用"和"声明,"&&"。

答案 1 :(得分:1)

此条件(ans !='N')||(ans !='n')始终为true。非ans中的N不是ansn。一方总是true。如果while (ans !='N')&&(ans !='n')等于ansN等于ans,则将其更改为n,然后您的循环终止。 注意A || B!(!A && !B)相同。

答案 2 :(得分:0)

正确的方式

int askAgain() {
    do {
        // Do your work
        // But never call main(), people will laugh
        cin>>ans;
    } while((ans !='N') && (ans !='n'));
    return 0;
}

答案 3 :(得分:0)

有更好的方法来完成你想要做的事情。即使有可能使它与return main()一起使用,但效率非常低。

在用户输入密钥(本例中为“N”)之前运行循环的一种方法是:

int main()
{
    char ans = '?';

    while (ans != 'N' && ans != 'n')
    {
        cin >> ans;
    }

    return 0;
}

目的是在用户不符合条件时不断提示用户输入值。我还将'ans'设置为值'?'所以在循环的第一次运行时它不会遇到错误。您还可以将其转换为:do-while循环并删除初始化以完成相同的操作。

希望能为您解释得足够。