2017-10-13 52 views
0

我试着做一个乘数。当我插入数字5时,奇迹般地变为53.当数字2时,它将是50.看不到我犯了一个错误。我的输入值不是我插入的数字

public static void Main(string[] args) 
{ 
    Console.WriteLine("Enter the number: "); 
    int num = Console.Read(); 
    Console.WriteLine(); 
    int i; 

    for (i = 0; i <= 10; i++) 
    { 
     int result = num * i; 
     Console.WriteLine("{0}*{1}={2}", num, i, result); 
    } 
} 
+2

变化'INT NUM = Console.Read();''到INT NUM = Convert.ToInt32(到Console.ReadLine());' – Equalsk

+4

及其与'的5 –

+0

整数转换ASCII等同放着清单值Console.ReadLine'在这里工作正常:https://dotnetfiddle.net/UxbT5O。 –

回答

7

查看Console.Readdocumentation。它从输入流返回下一个字符。通过将其分配给int,您可以将char转换为产生角色代码的int

使用Console.ReadLineint.Parse而不是合并:

int num = int.Parse(Console.ReadLine()); 

这将返回整个输入作为string,并且int.Parse将尝试从它创建一个int

+2

真的,应该使用'TryParse',因为如果用户输入非数字字符串,'Parse'将会抛出异常。就像'if(int.TryParse(Console.ReadLine(),out int num))',然后像往常一样处理代码的其余部分,并在'else'块中处理一些代码。 –

+0

@ T.Linnell然而,当然,我想尽可能简洁地回应我的回答,因为根据问题的性质,OP必须是初学者,因此我不想添加任何不必要的噪音。我在这个答案中假设有效的输入。 –

+1

@ T.Linnell,你忘了添加日志记录和设置项目;) – Sinatr

1

使用Console.ReadLine()方法;

int num =Convert.ToInt32(Console.ReadLine()); 
0
public static void Main(string[] args) 
    { 
     Console.WriteLine("Enter the number: "); 
     string input = Console.ReadLine(); 
     int num; 
     // Console.WriteLine(); 
     if (Int32.TryParse(input, out num)) 
     { 
      int i; 
      for (i = 0; i <= 10; i++) 
      { 
       int result = num * i; 
       Console.WriteLine("{0}*{1}={2}", num, i, result); 
      } 
     } 
     else 
     { 
      //not an integer 
      Console.WriteLine("not an integer"); 
     } 
     Console.ReadLine(); 

    } 
+0

请解释你的代码问题 – GGO

+0

Console.ReadLine()将所有来自控制台的输入作为字符串,所以你需要转换为整数。 Int32.TryParse()将字符串转换为等效的32位有符号整数并将其分配给parameter.Else,您知道输入不是整数。谢谢 –

+0

编辑你的答案来解释你的代码 – GGO

相关问题