Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过命令行从用户获取数据_C#_Command Line - Fatal编程技术网

C# 通过命令行从用户获取数据

C# 通过命令行从用户获取数据,c#,command-line,C#,Command Line,我希望有人在我的代码中输入长度和宽度的值,以下是我目前得到的结果: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { class Rectangle { double length; double wid

我希望有人在我的代码中输入长度和宽度的值,以下是我目前得到的结果:

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

namespace ConsoleApplication2
{
    class Rectangle
    {
        double length;
        double width;
        double a;

        static double Main(string[] args)
        {
            length = Console.Read();
            width = Console.Read();
        }

        public void Acceptdetails()
        {

        }

        public double GetArea()
        {
            return length * width;
        }

        public void Display()
        {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }

    class ExecuteRectangle
    {
        public void Main()
        {
            Rectangle r = new Rectangle();

            r.Display();
            Console.ReadLine();
        }
    }
}

尝试使用两种
Main
方法是否是错误的方法?这是我从中复制的代码,我正在尝试对其进行修改,以获得更多使用这种编程语言的经验。

在这种情况下,您必须告诉编译器,它是具有入口点的类

如果您的编译包含多个带有Main方法的类型,您可以指定哪个类型包含要用作程序入口点的Main方法


是的,有两个主要方法是令人困惑和毫无意义的。

在这种情况下,您必须告诉编译器,它是具有入口点的类

如果您的编译包含多个带有Main方法的类型,您可以指定哪个类型包含要用作程序入口点的Main方法


是的,有两种主要方法是令人困惑和毫无意义的。

您的代码有一些问题,让我们分析一下:

  • 一个程序必须有一个唯一的入口点,并且必须声明为静态void,这里有两个主入口点,但它们是错误的

  • 在static Main中,不能引用rectangle类中的变量length e width,因为它们没有声明为static

  • console.Read()返回表示字符的int,因此如果用户输入1,则长度变量中可能有不同的值
  • 您的静态double Main不返回double
  • 我想你想要的是:

  • 将静态双Main声明为void Main()
  • 将void Main声明为静态void Main(字符串[]args)
  • 在新的静态void Main调用中(创建矩形后),它是Main方法(要做到这一点,必须将其定义为public)
  • 使用ReadLine而不是Read()
  • ReadLine返回一个字符串,以便在双精度中转换该字符串,必须使用lenght=double.Parse(Console.ReadLine())
  • 最后调用您的r.display()
  • 这是一个工作代码,可以实现您想要的功能。 在复制粘贴之前请注意,因为您正在尝试和学习,请阅读步骤并尝试在不查看代码的情况下修复它

    class Rectangle
    {
        double length;
        double width;
        double a;
        public void GetValues()
        {
            length = double.Parse(Console.ReadLine());
            width = double.Parse(Console.ReadLine());
        }
        public void Acceptdetails()
        {
    
        }
        public double GetArea()
        {
            return length * width;
        }
        public void Display()
        {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    
    }
    class ExecuteRectangle
    {
        public static void Main(string[] args)
        {
    
            Rectangle r = new Rectangle();
            r.GetValues();
            r.Display();
            Console.ReadLine();
        }
    }
    

    您的代码存在一些问题,让我们分析一下:

  • 一个程序必须有一个唯一的入口点,并且必须声明为静态void,这里有两个主入口点,但它们是错误的

  • 在static Main中,不能引用rectangle类中的变量length e width,因为它们没有声明为static

  • console.Read()返回表示字符的int,因此如果用户输入1,则长度变量中可能有不同的值
  • 您的静态double Main不返回double
  • 我想你想要的是:

  • 将静态双Main声明为void Main()
  • 将void Main声明为静态void Main(字符串[]args)
  • 在新的静态void Main调用中(创建矩形后),它是Main方法(要做到这一点,必须将其定义为public)
  • 使用ReadLine而不是Read()
  • ReadLine返回一个字符串,以便在双精度中转换该字符串,必须使用lenght=double.Parse(Console.ReadLine())
  • 最后调用您的r.display()
  • 这是一个工作代码,可以实现您想要的功能。 在复制粘贴之前请注意,因为您正在尝试和学习,请阅读步骤并尝试在不查看代码的情况下修复它

    class Rectangle
    {
        double length;
        double width;
        double a;
        public void GetValues()
        {
            length = double.Parse(Console.ReadLine());
            width = double.Parse(Console.ReadLine());
        }
        public void Acceptdetails()
        {
    
        }
        public double GetArea()
        {
            return length * width;
        }
        public void Display()
        {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    
    }
    class ExecuteRectangle
    {
        public static void Main(string[] args)
        {
    
            Rectangle r = new Rectangle();
            r.GetValues();
            r.Display();
            Console.ReadLine();
        }
    }
    

    Console.Read
    返回1个字符,而不是期望的整数(或双精度)值。阅读一些关于
    控制台.ReadLine
    double.Parse
    的文档,与您的示例不同,这个类是静态的,所以创建长度、宽度等静态变量。没有理由让多个方法命名为main。将main更改为static int main(string[]args),并在底部放置一个返回0。
    Console.Read
    返回1个字符,而不是期望的整数(或双精度)值。阅读一些关于
    控制台.ReadLine
    double.Parse
    的文档,与您的示例不同,这个类是静态的,所以创建长度、宽度等静态变量。没有理由让多个方法命名为main。将main更改为static int main(字符串[]args),并在底部放置一个返回0。我已经指定了要使用的main方法。我仍然收到一个错误。'ConsoleApplication2.Rectangle'没有合适的静态Main方法Main必须返回void,而不是double。'ConsoleApplication2.Rectangle.Main(string[])的入口点签名错误。它必须是:静态void Main(string[]args)我已经指定了要使用的主方法。我仍然收到一个错误。'ConsoleApplication2.Rectangle'没有合适的静态Main方法Main必须返回void,而不是double。'ConsoleApplication2.Rectangle.Main(string[])的入口点签名错误它必须是:静态void Main(string[]args)查看我的代码我将其中一个Main重命名为更合适的名称(GetValues)。您的程序必须有一个定义为公共静态void Main(字符串[]args)的入口点,该入口点是程序在执行时调用的第一个方法。查看我的代码,我将其中一个Main重命名为更合适的名称(GetValues)。您的程序必须有一个定义为公共静态void Main(字符串[]args)的入口点,该入口点是程序执行时调用的第一个方法。