2013-10-06 52 views
1

我對編程完全陌生,所以這可能是一個簡單的答案愚蠢的問題。我的應用程序允許用戶鍵入一個數字,選擇他們正在使用的測量單位,選擇他們要轉換的測量單位並將其轉換。C,英寸,英尺和碼距離轉換器#

我在最後一行代碼中存在一個錯誤,它使它無法正常工作:'不能將類型'int'隱式轉換爲'string'。有人可以幫忙嗎?

下面的代碼:

private void convertButton_Click(object sender, EventArgs e) 
    { 
     int fromDistance; 
     int toDistance; 

     fromDistance = int.Parse(distanceInput.Text); 
     string measureInput = fromList.Items[fromList.SelectedIndex].ToString(); 
     string measureOutput = toList.Items[toList.SelectedIndex].ToString(); 

     switch (measureInput) 
     { 
      case "Yards": 
       switch (measureOutput) 
       { 
        case "Yards": 
         toDistance = fromDistance; 
         break; 
        case "Feet": 
         toDistance = fromDistance * 3; 
         break; 
        case "Foot": 
         toDistance = fromDistance * 3 * 12; 
         break; 
       } 
       break; 
      case "Feet": 
       switch (measureOutput) 
       { 
        case "Feet": 
         toDistance = fromDistance; 
         break; 
        case "Yards": 
         toDistance = fromDistance/3; 
         break; 
        case "Foot": 
         toDistance = fromDistance * 12; 
         break; 
       } 
       break; 
      case "Foot": 
       switch (measureOutput) 
       { 
        case "Foot": 
         toDistance = fromDistance; 
         break; 
        case "Feet": 
         toDistance = fromDistance/12; 
         break; 
        case "Yards": 
         toDistance = fromDistance/(3 * 12); 
         break; 
       } 
       break; 
     } 
     distanceOutput.Text = toDistance; 
    } 
+0

錯誤消息說:「一個整數被發現在一個字符串的地方,但是,從整數到一個字符串沒有自動轉換。因此,這取決於手動提供這種轉換的代碼。給定一個整數,如何獲得表示它的字符串? – user2246674

+0

我想你已經鍵入腳你的意思是英寸。 –

+0

謝謝你們。就像我說的,我對編程不熟悉,所以我不確定我想要將整數的表示轉換爲實際的整數。是的,我的意思是將'腳'改爲'英寸':) – Learnin2Code

回答

2
distanceOutput.Text = toDistance.ToString(); 

看起來你可以用來動態類型語言? int以二進制表示形式存儲,並可以表示許多不同的值。 .ToString()轉換爲最常見的表示形式。

順便說一句,你可能不應該使用你的計算值類型的整數,因爲你會扔掉小數。使用double或float,並使用Math.Round(number,decimalPoints)。

+0

謝謝你的答覆天頂。我試了d​​istanceOutput.Text = toDistance.ToString();現在它說「使用未分配的本地變量」。你能告訴我這是什麼意思嗎? – Learnin2Code

+0

@zenith編譯器告訴你,你的邏輯有一條路徑,toDistance永遠不會被賦值。您可以看到,如果measureInput或measureOutput的值不正確,則可能沒有任何case語句會被執行。如果你確信這些值總是會限制在你的case語句中,那麼你可以簡單地在方法開始時聲明toDistance爲0。 –

+0

啊是的!我宣佈toDistance = 0,它的工作!非常感謝Byron Lo! – Learnin2Code

0

您可以使用枚舉將輸入/輸出字符串轉換爲轉換數字。這具有極大地簡化代碼的優點。但是,您必須確保列表中的字符串與您的枚舉中的名稱完全匹配。這個簡單的算法將從任何輸入轉換爲任何輸出。

enum Conversions 
    { 
     Inches = 1, 
     Feet = 12, 
     Yards = 36 
    } 

    private void convertButton_Click(object sender, EventArgs e) 
    { 
     int fromDistance = 0; 
     int toDistance = 0; 

     fromDistance = int.Parse(distanceInput.Text); 

     Conversions measureinput = ((Conversions)Enum.Parse(typeof(Conversions), fromList.Items[fromList.SelectedIndex].ToString()); 

     Conversions measureoutput = (Conversions)Enum.Parse(typeof(Conversions), toList.Items[toList.SelectedIndex].ToString()); 

     toDistance = (fromdistance * (int)measureinput)/(int)measureoutput; 

     distanceOutput.Text = toDistance.ToString()+ " " + Enum.GetName(typeof(Conversions), measureoutput); 
    } 
相關問題