我正在编写一段简单的代码来根据用户输入输出一定次数的文本,但是在终端中运行时,我需要键入数字两次(例如:5 [enter] 5 [enter],那么文本将输出5次)。只是想知道为什么会这样,以及如何解决这个问题,非常感谢。
#include <iostream>
using namespace std;
int main() {
int x;
int i;
cout << "How many times do you want me to say [London Town], Numbers only" << end;
while (true) {
cin >> x;
if (!cin) {
cout << "Please type a number not text" << endl;
cin.clear();
cin.ignore(numeric_limits < streamsize > ::max(), 'n');
continue;
} else break;
}
cin >> x;
for (int i = 0; i < x; i++) {
std::cout << "London Town n";
}
}
将x读入两次,因此需要输入两次。您可以通过删除其中一个cin >> x
来修复此问题。
例如:
#include <iostream>
using namespace std;
int main() {
int x;
int i;
cout << "How many times do you want me to say [London Town], Numbers only" << end;
while (true) {
cin >> x;
if (!cin) {
cout << "Please type a number not text" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), 'n');
continue;
} else break;
}
for (int i = 0; i < x; i++) {
std::cout << "London Town n";
}
}
main中的int i;
未被使用,因此您也可以删除它。如果需要,还可以将while
循环与If语句结合使用。
例句:
#include <iostream>
#include <limits>
int main() {
std::cout << "How many times do you want me to say [London Town], Numbers only" << std::endl;
int x;
while(!(std::cin >> x)) {
std::cout << "Please type a number not text" << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
}
for (int i = 0; i < x; i++) {
std::cout << "London Town n";
}
}
例子godbolt