2013-08-24 4 views
0

Я хочу, чтобы кто-то вход значение для длины и ширины в моем коде, вот что я получил до сих пор:Получение данных от пользователя через командную строку

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 методы неправильный способ приблизиться к этому? Это код, который я копировал с http://www.tutorialspoint.com/csharp/csharp_basic_syntax.htm. Я пытаюсь изменить его, чтобы получить больше опыта с этим языком программирования.

+0

'Console.Read' возвращает 1 ** символ **, а не целое число (или двойное) значение, которое вы ожидаете. Прочтите некоторые документы о 'Console.ReadLine',' double.Parse' – I4V

+0

В отличие от вашего примера, этот класс является статическим, поэтому статичные переменные длины, ширины и т. Д. И нет причин иметь несколько методов с именем main. Измените main на static int Main (string [] args) и положите 0 в нижней части. – dcaswell

ответ

0

В этом случае вам нужно будет указать компиляции, которые являются классом с точкой входа.

«Если ваша компиляция включает в себя несколько типов с помощью метода Main, вы можете указать, какой тип содержит метод Main, который вы хотите использовать в качестве точки входа в программу».

http://msdn.microsoft.com/en-us/library/x3eht538.aspx

И да, имея два основных метода является запутанной и бессмысленной.

+0

Я уже указал, какой основной метод использовать. Я все еще получаю сообщение об ошибке. – novellof

+1

«ConsoleApplication2.Rectangle» не имеет подходящего статического метода Main – novellof

+0

Какая ошибка? Где выход? – Oscar

4

Есть некоторые проблемы с вами кода, давайте рассмотрим их:

  1. программа должна иметь единственную точку входа, и она должна быть объявлена ​​как статическая пустоте, здесь есть два основных, но они не правы

  2. вы в вашем статическом ГЛАВНОЕ один в классе прямоугольника вы не можете ссылаться на ширину длины переменных е, потому что они не объявлены как статические

  3. console.Read() возвращает Int, которые представляют символ поэтому использование, если пользователь вводит 1 может иметь различное значение в вашей переменной длины
  4. ваш статический двойной Main не возвращает двойной

Я думаю, что вы хотите:

  1. объявить статический двойной Main, как void Main()
  2. объявить свою пустоту Главная как статическая void Главная (строка [] args)
  3. в вашей новой статической пустоте Главный вызов (после создания прямоугольника) - это основной метод (для этого вам нужно определить его как открытый)
  4. использование ReadLine вместо Read()
  5. ReadLine возвращает строку так, чтобы преобразовать, что в два раза, вы должны использовать клыков = double.Parse (Console.ReadLine())
  6. наконец называют свой 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(); 
    } 
} 
+0

Посмотрите на мой код. Я переименовал один из Main в более подходящее имя (GetValues). Ваша программа должна иметь точку входа, которая определяется как public static void Main (string [] args), точка входа - это первый метод, который программа вызывает, когда она выполняется. –

+0

Спасибо, я изучу это, как священник делает с библией. – novellof

Смежные вопросы