如果输入无效,则返回c ++

时间:2009-08-22 18:42:22

标签: c++

我已经完成了一项需要以下内容的程序:

  1. 提示用户输入帐户号
  2. 提示用户输入帐户类型
    1. 如果帐户type == a,会提示输入并执行某个公式[if]
    2. 如果帐户type == b,会提示输入并执行另一个公式[else if]
    3. 如果帐户类型错误(不是a或b),则提示错误并返回2 [else]
  3. 提示用户输入退出[do while]
    1. if input == y,退出
    2. if input == n,返回1
  4. 目前我已经陷入2.3了。 它会提示错误并转到3而不是返回2以提示用户输入。

    问题在哪里?别的?

3 个答案:

答案 0 :(得分:2)

如果没有看到任何实际代码,就无法说明您的尝试有什么问题。但是这样的事情应该有效

// ...
string atype;
while(atype != "a" && atype != "b") {
  cin >> atype;
  if(atype == "a") {
    // 2.1
  } else if(atype == "b") {
    // 2.2
  } else {
    cout << "wrong input" << endl;
  }
}
// ...

答案 1 :(得分:2)

如果类型错误,您必须使用循环来继续询问帐户类型:

do
{
    //1
    do 
    {
        //2
        if (type =="a")
            //2.1
        else if(type=="b")
            //2.2
        else
            //2.3
    } 
    while (type != "a" and type != "b");
    //3
    if(input == "y")
        return;
}
while (input == "n");

答案 2 :(得分:0)

如果你在每个案例发生时你都应该做一些工作,并且你想避免使用“goto”(你可能应该这样做),我建议将1),2)和3)分开。三个独立的职能。

如果您应该做的事情非常简单,我建议使用类似于sepp2k发布的解决方案。但是,我会将while循环调整为do-while循环(你不应该在循环开始时测试atype,因为从技术上讲它没有初始化)。