C ++询问用户输入是否正确错误

时间:2011-10-11 00:54:52

标签: c++

我试图添加代码,所以如果用户输入错误,他们可以返回程序并重新输入输入,但我不确定我找到和使用的代码是否正确。这是我的职责:

/********************************************/
// Name: inspools                            /
// Description: Ask for and get number of    /
// spools                                    /
// Parameters: N/A                           /
// Reture Value: spoolnum                    /
/********************************************/
int spoolnum()
{
  int spoolnum;
  char type;

  cout << "Number of spools to be shipped: " << endl;
  cin >> spoolnum;
  cout << spoolnum << " spool(s) of wire will be shipped" << endl;
  cout << "Is this correct? [y/n] ";
  cin >> type;
  if ('n') << spoolnum;

  if ('y') break;

  return spoolnum ;
}

1 个答案:

答案 0 :(得分:2)

你说你搜索过循环,但我不买。我想你在编程方面很有新意。我会给你答案但不是没有先解释一下。

循环如何工作

来自Wikipedia

enter image description here

  

在大多数计算机编程语言中,while循环是一个控制流程   允许代码根据给定重复执行的语句   布尔条件。 while循环可以被认为是重复的if   言。

您的问题

您的问题是,您希望让用户在输入y之前输入一个选项。为此,您至少需要一个WHILE循环,或者其他评论者已经说过DO/WHILE循环。

我从不喜欢DO/WHILE循环,但其他人更喜欢它。

以下代码可能导致的问题是,您在y中返回的cin不仅仅是换行符\n。你必须处理这个条件。

int spoolnum()
{
  int spoolnum = 0;
  char type = 'n';

  while (type != 'y') {
      cout << "Number of spools to be shipped: " << endl;
      cin >> spoolnum;
      cout << spoolnum << " spool(s) of wire will be shipped" << endl;
      cout << "Is this correct? [y/n] ";
      cin >> type;
  }
  return spoolnum;
}

或替代DO/WHILE

int spoolnum()
{
  int spoolnum = 0;
  char type = 'n';

  do {
      cout << "Number of spools to be shipped: " << endl;
      cin >> spoolnum;
      cout << spoolnum << " spool(s) of wire will be shipped" << endl;
      cout << "Is this correct? [y/n] ";
      cin >> type;
  } while (type != 'y');

  return spoolnum;
}

在上面的代码中,我删除了您的if ('n') << spoolnum;,因为坦率地说它没有感觉

我还删除了if ('y') break;,因为while(...)循环会在条件满足后中断,即type equal to 'y'