2015-08-08 182 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,可以在写入之前检查字符串的值。

有几种方法可以实现这种格式。根据你想要达到的目标,一个可能比另一个更合适。

相关问题