2014-09-30 50 views
-1

我的代碼可以編譯,但它不會返回字符ask,也不會跟隨else語句,因爲它會在輸入true之後關閉錯誤消息if聲明。在C++初學者,所以任何幫助表示讚賞。「從int到char的截斷」不產生任何結果

// Python Challenge 2.cpp : This program will take a line of text from the user and then translate each letter 2 over in the alphabet. 
// 

#include "stdafx.h" 

#include <iostream> 

using namespace std; 
char chChar; 
char chChar2; 
char chChar_a; 
char chChar_b; 
int main() 
{ 
    //This takes the one letter input from the user: 
    cout << "Type in a lowercase letter: "; 
    cin >> chChar; 

    //for letters a-x 
    if ((int)chChar >= 97 && (int)chChar <= 120) 
     char chChar2 = (int)chChar + 2; 
     cout << "is now: " << chChar2 << endl; 

     //for the letter y 
     if ((int)chChar == 121) 
     { 
      char chChar_a = '97'; 
      cout << "is now: " << chChar_a << endl; 
     } 

     //for the letter z 
     if ((int)chChar == 122) 
     { 
      char chChar_b = '98'; 
      cout << "is now: " << chChar_b << endl; 
     } 

    //for everything else 
    else 
     cout << "Error: type in a lowercase letter." << endl; 

     return 0; 
} 
+0

您的if語句缺少括號 – MicroVirus 2014-09-30 21:49:29

+0

'char chChar_a ='97';'這看起來不正確.. – 2014-09-30 21:49:44

+2

您不需要將'char'轉換爲'int'來對它們進行算術運算,而' 97'應該是97(或者最好是'a'),'98'應該是98(或者最好是'b')。您也可以用'x'取代120,用'y'取代121,用'z'取代122。 – molbdnilo 2014-09-30 21:54:53

回答

0

if說法是不正確的:你忘了創建後使用{ }塊。

既然這樣,代碼的作用:

//for letters a-x 
if ((int)chChar >= 97 && (int)chChar <= 120) 
{ 
    char chChar2 = (int)chChar + 2; 
} 
// Always runs the next part 
cout << "is now: " << chChar2 << endl; 
... 

,最終else之前它連接到if

//for the letter z 
if ((int)chChar == 122) 
{ 
    char chChar_b = '98'; 
    cout << "is now: " << chChar_b << endl; 
} 
else 
{ 
    cout << "Error: type in a lowercase letter." << endl; 
} 

爲了解決這個問題,添加適當的支架{ }。沒有括號的if只是有條件執行下一條語句,而不是塊 - 不要讓壓痕欺騙你:他們在C.沒有意義


所以,這一點,你的固定碼看起來應該像:

//This takes the one letter input from the user: 
cout << "Type in a lowercase letter: "; 
cin >> chChar; 

//for letters a-x 
if ((int)chChar >= 97 && (int)chChar <= 120) 
{ 
    char chChar2 = (int)chChar + 2; 
    cout << "is now: " << chChar2 << endl; 

    //for the letter y 
    if ((int)chChar == 121) 
    { 
     char chChar_a = '97'; 
     cout << "is now: " << chChar_a << endl; 
    } 

    //for the letter z 
    if ((int)chChar == 122) 
    { 
     char chChar_b = '98'; 
     cout << "is now: " << chChar_b << endl; 
    } 
} 
//for everything else 
else 
{ 
    cout << "Error: type in a lowercase letter." << endl; 
} 

return 0; 

以此爲出發點,可以調試你的代碼進行進一步的問題。

+0

非常感謝。我知道它必須處理我的括號,但是測試了不同的位置,並不理解我出錯的地方。看到你的解決方案幫助教我如何避免將來出現這種錯誤。謝謝。 – 2014-10-01 14:35:37

+0

除了現在我對y和z的聲明不起作用。試圖現在解決它。如果我發現它會發布解決方案 – 2014-10-01 14:40:58

+0

爲了讓y和z工作,我必須在if的if語句之前添加else。現在z語句讀取else if((int)chChar == 122)。所有工作都應該如此。 – 2014-10-01 14:55:14