2016-10-26 16 views
-1

数字がインターガーかどうかを確認しようとしています。私はこれを実行するとループについて、いくつかのエラーがあります

  1. 、私は、このような5.5のように番号を入力し、それが示し、「5.5はint型ではありませんもう一度やり直してください:」。それから、「a」のような手紙を入力すると、「5.5 is intではありません。もう一度やり直してください:」と表示されます。文字「a」は整数ではなく文字です。私はそれが第2の場合に行かなければならず、「No letter please」と表示しなければならないと思うが、そうではない。

  2. 「D」などの文字を最初に入力すると、プログラムは「無制限の時間に文字を入力してください」を実行します。私はそれが "いいえの手紙をください"が表示されたいが、一回だけ、このループで別の番号を入力することができます。

これらのエラーを修正するにはどうすればよいですか?

​​

}

+0

ああ私はあなたが無限に何を実行するかにかかわらず。 'while(true)'となりません。 – Gavin

+0

これを[debugger](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)で修正します。コード、変数を見て、あなたが完了したときにすべてがどのように動いているのかを理解するでしょう。 – UKMonkey

+0

さて、あなたはそれが現在どのように動作しているのかを記述しましたが、どのように実行したいのか記述していません。質問を編集し、作成しようとしている動作を明確に教えてください。 – Alyoshak

答えて

0

あなたはこの方法で行うことができます。ユーザーからの文字列を入力します。その文字列の文字数を数えます。これが文字列の長さに等しい場合、有効な正の整数です。桁数は、文字列と文字列のサイズより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 again\n"; 
} 
return 0; 
} 
関連する問題