About循环,它有一些错误

About loop, it has some errors

本文关键字:错误 循环 About      更新时间:2023-10-16

我试着识别一个数字是否是整数。

  1. 当我运行这个命令时,我输入一个数字,比如5.5,它显示"5.5不是整型"。请再试一次。然后我输入字母,比如"a",它显示"5.5 is not int"。请再试一次。字母"a"是一个字符,不是整数,我认为它应该去第二个情况,必须显示"No letter please",但它不是

  2. 当我第一次输入一个字母,如"D"时,程序会无限次运行"请不要字母"。我希望它显示"请不要字母",但只有一次,然后我可以在这个循环中输入另一个数字。

如何修复这些错误?

while (true) {

    while ((num) != static_cast<int>(num)) {
        cout << "t" << num << " is not int. Please try again: ";
        cin >> num;
        cin.clear();
        cin.ignore(80, 'n');
    }
    while (!(cin >> num)) {
        cout << "tNo letter please: ";
        cin >> num;
        cin.clear();
        cin.ignore(80, 'n');
    }
    cout << "Good! " << num << " is an int!nn";

}

您可以这样做。输入来自user的字符串。计算该字符串中的字符数。如果它等于字符串长度,则它是一个有效的正整数。对于负整数,只需检查位数是否比字符串的大小小1,并且字符串从0开始。

#include <iostream>
using namespace std;
int main() 
{
string s;
while(true)
{
    cin>>s;
    int i,no_of_digits=0;
    for(int i=0;i<s.length();i++)
    {
        if(isdigit(s[i]))
            no_of_digits++;
    }
    if(no_of_digits == s.length() || (no_of_digits == s.length()-1 && s[0]=='-'))
    {
        cout<<"Good "<<s<<" is an Integer.";
        break;
    }
    cout<<s<<" is not a valid Integer!nPlease Enter againn";
}
return 0;
}

在cpp中解析字符串的最佳方法。使用cpp11的stringstream或sto* series函数。

这里已经有一些好的答案了