“编写一个由while循环组成的程序(每次循环)读取两个整数然后打印它们。 终止'|'时退出程序进入。“
我的尝试
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
int firstnumber;
int secondnumber;
int stopnumber;
while(stopnumber!='|'){
cout <<"Please enter an integer, followed by another integer: \n";
cin >> firstnumber >> secondnumber;
cout <<"\n" << firstnumber <<" "<< secondnumber<< " \n";
}
return 0;
}
该程序需要2个数字并打印出来,但当我输入“|”时,它进入无限循环。当我输入'|'
时如何停止程序由于
答案 0 :(得分:1)
这就是你的循环应该是这样的:
std::cin::get
)。::isdigit
),请继续循环播放。std::cin::putback
)。std::cin::clear
)。您必须耐心地了解get
,putback
&amp; isdigit
正在做。
<强> [编辑] 强> Run it
#include <iostream>
#include <cctype>
int main()
{
char c;
while ( std::cin.get( c ) && c != '|' )
{
if ( !std::isdigit( c ) )
continue;
std::cin.putback( c );
int i, j;
if ( std::cin >> i >> j )
std::cout << i << ' ' << j << std::endl;
else
std::cin.clear();
}
return 0;
}
答案 1 :(得分:0)
您的循环正在测试从未设置的stopnumber
。如果您将stopnumber
设置为firstnumber
或secondnumber
,那么也许您可以让您的逻辑工作,但实际上缺少一步。
答案 2 :(得分:0)
这取决于您是否需要在收到“|”后直接退出在退出之前,你是否先介意完成循环的其余部分......
我个人想收到'|'后直接退出所以会遵循......的基本理念。
int a,b;
while(){
read your values a,b in
if (a='|' || b='|'){exit()};
print your values
}
答案 3 :(得分:0)
好的,我想我找到了答案
我试着把我的cin放在while循环中
int firstnumber;
int secondnumber;
while (cin >> firstnumber >> secondnumber)
它有效!谢谢大家的帮助
答案 4 :(得分:0)
std :: stoi(std :: string) - 从std :: string
返回int#include <iostream>
#include <string>
bool isNumber(std::string &str) {
for (auto i : str) {
if (i < '0' || i > '9') return false;
return true;
}
int main () {
int a, b;
std::string s;
while (true) {
std::cin >> s;
if (s == "|" || !isNumber(s)) break;
a = std::stoi(s);
std::cin >> s;
if (s == "|" || !isNumber(s)) break;
b = std::stoi(s);
std::cout << a << " " << b << std::endl;
}
return 0;
}