0

私の質問は、Console.Read() を使用して 2 つの数値を計算する方法です。コードを実行すると

    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);
            }
        }
    }

数字を 1 つだけ入力すると、実行結果が表示されます。

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.Read2

于 2015-08-20T20:41:04.373 に答える