2016-02-12 21 views
0

我設置了我的while循環,如果輸入'q'或'Q',它應該中斷,只有這樣我才能使它工作如果我將「數字」設置爲char而不是int。如果我把它改成char,所有的東西都會充滿瑕疵。這是它的樣子。目前如果我按'q'打破,它進入無限漫遊不知道要改變什麼讓一個char break語句

int maximum = 0, sum = 0, odd = 0, even = 0, minimum = 0, count = 0; 
    int number; 
    char q, Q; 


    while (1) 
    { 
     cout << "Enter a series of number, then type Q to process: "; cin >> number; 

     if (number == 'q') 
      break; 

我需要它是沿線的東西;

if (number == 'q' | | number == 'Q') 
cout << "No Numbers were pressed"; 
break; 

此外,爲了使一個變量未定義,它給了我錯誤。我需要maximumminimum是未定義的,所以如果用戶沒有超過0,那麼它不會說他們的maxinum數字被按爲0.任何想法?

回答

1

您需要了解流操作符如何工作。 cin >> number會希望你的輸入是數字(和小數)。如果你給它Q,它不接受它,並且不會修改number

如果你希望你的輸入視爲數值和字符串,你會先讀它是一個std::string,檢查字符串相等"q"NB - 作爲一個字符串,引號,而不是作爲一個字符!),如果不是,則將字符串轉換爲整數 - 在C++ 11中,可以使用std::stoi

1

std :: cout不會將字符讀入int變量。換句話說,這段代碼永遠不會工作。您可以將輸入更改爲字符串並將其解析爲int(stoi在此處很有用),也可以有兩個單獨的讀取,一個寫入字符,一個寫入int。

+0

整數可以容納一個字符值。不同之處在於整數和字符的讀取方式不同。 – Peter

+0

我可能說錯了,我想我的意思是std :: cin不會讀取一個字符作爲int值。 –

+0

@JacobH,比你最好編輯它,因爲現在你的回答很具誤導性。 – SergeyA

-1

你需要

string input; 
int num; 
cout << "Enter a series of number, then type Q to process: "; 
while(true) 
{ 
cin >> input; 
if(input == "q" || input == "Q") 
    break; 
num = strtol(input.c_str()); 
..... 
} 
+0

沒有標準函數叫做'strtoi'(並且對該名稱的非標準函數進行快速調查顯示沒有接受任何單一的'char'參數) –