2015-08-08 170 views
-5
namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int i = int.Parse(Console.ReadLine()); 

      switch (i) 
      { 
       case 1: 
        for (i = 1; i <= 10; i++) 
        { 
         Console.WriteLine(1+"*"+i+"="+i*1); 
        } 
        break; 
      } 
      Console.ReadKey(); 
     } 
    } 
} 
+4

歡迎來到Stack Overflow。我沒有看到這個代碼部分有什麼問題。你可以請更具體嗎?例如,哪一行?請閱讀[FAQ]和[ask]作爲開始.. –

+0

所以你想要一個整數的值爲'1'到一個包含星號的字符串,並將'i'的當前值添加到...?您需要選擇_one_數據類型,例如'string',並連接各種子串,例如'i.ToString()',以達到你的結果。 – HABO

+0

你的問題解決了嗎?您沒有按要求提供更多信息,也未接受答案。如果您的問題已解決,請告訴我們。 – Alex

回答

-1

據我所知,您可以使用此代碼轉換爲int。 (沒有測試你的例子)。

switch (i) 
    { 
     case 1: 
      for (i = 1; i <= 10; i++) 
      { 
       int Val = Int32.Parse(1+"*"+i+"="+i*1); 
       Console.WriteLine(Val); 
      } 
      break; 
    } 
    Console.ReadKey(); 
} 

或更好,您可以使用(Int32.TryParse),如果轉換成功,則返回true。

switch (i) 
    { 
     case 1: 
      for (i = 1; i <= 10; i++) 
      { 
       int Val; 

       if (Int32.TryParse(1+"*"+i+"="+i*1, out Val)) 
       { 
       // TryParse returns true if the conversion succeeded. 
       } 
      } 
      break; 
    } 
    Console.ReadKey(); 
} 
+0

調用Int32.Parse(1 +「*」+ i +「=」+ i * 1)實際上是在說'將字符串1 * 1 = 1轉換爲Int32',這會拋出一個解析異常。 – Alex

0

從文章的標題,我猜你的錯誤來了,從那裏你正在閱讀的控制檯輸入,而不是從那裏你寫的結果(你還沒有很明確的錯誤被拋出的地方。堆棧跟蹤可能很有用)。

當您獲取用戶輸入進行解析時,您最好將該值分配給一個字符串,然後使用TryParse,而不僅僅是解析。

String inString = Console.ReadLine(); 
int i = 0; 
bool parsedNumber = Int32.TryParse(inString, out i); 
if (parsedNumber) { 
    //Do Something with your lovely new Int32 
} 

或者,您可以使用try/catch塊。

String inString = Console.ReadLine(); 
try { 
    i = Int32.Parse(inString); 
    //Do something with your int here 
} catch (Exception ex) { 
    //Not a number 
} 

如果我理解你的要求,你希望你的輸出是這個樣子......

1 * 1 = 1

1 * 2 = 2

...等等。

如果是這樣,您最好計算總和的乘積,並使用字符串生成器將輸出放在一起。

for (i = 1; i <= 10; i++) 
{ 
    int res = i * 1; 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("1 * ").Append(i).Append(" = ").Append(res); 
    Console.WriteLine(sb.ToString()); 
} 

使用的WriteLine過載馬克的回答是完全有效的也一樣,會是以下使用的String.Format

String outString = String.Format("1*{0}={1}", i, i*1); 
Console.WriteLine(outString); 

的使用爲Console.WriteLine過載馬克顧名思義就是乾淨的代碼,但通過使用String.Format,可以在寫入之前檢查字符串的值。

有幾種方法可以實現這種格式。根據你想要達到的目標,一個可能比另一個更合適。

相關問題