无论其他读取如何,Read都会关闭整个程序。

时间:2014-02-27 23:42:00

标签: c# integer termination

所以我试图创建一个允许用户插入长度和宽度值的程序,然后调用另一个方法来计算面积和周长。但是,我似乎无法通过用户输入部分。

整个程序在我输入长度后关闭。我读到在你按下回车键后终止了Read命令,所以我想知道我应该如何让用户输入多个值。我尝试将WriteLine命令放在Read命令之间,但这并不能阻止程序关闭。

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IntroToCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Length?");
            int length = Console.Read();
            Console.WriteLine("Width?");
            int width = Console.Read();
            Console.WriteLine("Good!");
            Perimeter(length, width);
        }

        public static double Area(int length, int width)
        {
            return length * width;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

Console.Read只读取一个字符 - 但它会一直等到你按Enter键才能这样做。所以正在发生的事情是你输入的内容然后点击输入,然后Console.Read将返回,然后你会尝试读取另一个角色 - 已经存在!

要读取整数作为完整的行,您应该使用类似:

string line = Console.ReadLine();
int width = int.Parse(line);

请注意,如果无法解析该值,则会抛出异常。请考虑使用int.TryParse来干净地处理无效的用户输入。

一旦你到达程序的末尾,可能自动终止,或者可能等待你返回 - 取决于你如何运行它。您始终可以向Console.ReadLine()添加另一个电话给强制它等待用户至少再次输入一次(或者在某些情况下为两次)。或者从命令行运行程序,在这种情况下它将终止但你仍然会看到结果。