0

我的问题是如何使用 Console.Read() 两个数字。当我运行代码时

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    {
        class Program
        {
            static void Main(string[] args)
            {
                int number1, number2, temp;

                Console.WriteLine("Enter the first number:\n");
                number1 = Console.Read();                       
                Console.WriteLine("\nEnter the Second number:\n");       
                number2 = Console.Read();
                Console.WriteLine("\nBefore swap, number1={0}, number2={1}\n", number1, number2);        
                temp = number1;
                number1 = number2;
                number2 = temp;
                Console.WriteLine("\nAfter swap, number1={0}, number2={1}\n", number1, number2);
            }
        }
    }

它只允许输入一个数字,然后出来运行结果:

Enter the first number:
12
Enter the Second number:

Before swap, number1=49, number2=50;
After swap, number1=50,number2=49;

它不执行我输入的 number1。这些 49,50 是什么意思?

我还写了另一个代码,它工作正常:

         int number1, number2,temp;

       Console.WriteLine("Enter the first number:\n");
       number1 = Int32.Parse(Console.ReadLine());
       Console.WriteLine("\nEnter the Second number:\n");
       number2 = Int32.Parse(Console.ReadLine());
       Console.WriteLine("\nBefore swap, number1={0}, number2={1}\n", number1, number2);

       temp = number1;
       number1 = number2;
       number2 = temp;
       Console.WriteLine("\nAfter swap, number1={0}, number2={1}\n", number1, number2);
4

2 回答 2

3

Console.Read()返回一个字符值,而不是输入的数字。另外,它只返回输入的第一个字符。实现您尝试的一个好方法是编写一个自定义方法来读取一个数字,Console.ReadLine()如下所示:

public static int ReadInt()
{
    string inputString = Console.ReadLine(); // Read the string
    int intValue;
    if (int.TryParse(inputString, out intValue)) // Try to parse the string, if it succeeds, it'll be put in intValue
    {
        return intValue;
    }
    return 0; // Invalid input, return 0 or something else
}
于 2015-08-20T20:42:28.177 回答
2

问题是您没有Console.ReadLine在第一个示例中使用;你正在使用Console.Read.

第一个Console.Read接受单个字符-在您的情况下,1. 根据这个 ASCII 表1字符对应于 (int) 49。第二个Console.Read类似地接收第二个字符,2并将其转换为 50。

于 2015-08-20T20:41:04.373 回答