Как напечатать объект в массиве? - PullRequest
0 голосов
/ 30 сентября 2011

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

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

namespace homework2
{

    class Shapes
    {
        protected string ShapeName;
        protected double ShapeWidth;
        protected double ShapeHeight;

        public Shapes(string ShapeName, double ShapeWidth, double ShapeHeight)

        {
            this.ShapeName = ShapeName;
            this.ShapeWidth = ShapeWidth;
            this.ShapeHeight = ShapeHeight;

        }

    }

    class Rectangle : Shapes 
    {
        public Rectangle(string ShapeName, double ShapeWidth, double ShapeHeight)
            : base(ShapeName, ShapeWidth, ShapeHeight) 
        {
            this.ShapeName = ShapeName;
            this.ShapeWidth = ShapeWidth;
            this.ShapeHeight = ShapeHeight;

        }

        public double GetArea()
        {
            if (ShapeName == "Circle")
            {
                ShapeHeight = 3.14;
                double x = ShapeHeight * (ShapeWidth * ShapeWidth);
                return x;
            }
            else
            {

                double Area = ShapeHeight * ShapeWidth;
                return Area;
            }

        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Rectangle Rec = new Rectangle("Circle",5,2);
            System.Console.WriteLine("This is the Rectangle Area :"+Rec.GetArea());

            System.Console.WriteLine("Please Enter How Many Shapes You want To enter:");
            String x =  Console.ReadLine();
            int y = int.Parse(x);
            for (int i = 0; i <= y; i++ )
            {
                System.Console.WriteLine("Enter Name for Shape No."+i+"Please");
                String ShapeName = Console.ReadLine();
                System.Console.WriteLine("Enter width for Shape No." + i + "Please");
                String ShapeWidth = Console.ReadLine();
                int sw = int.Parse(ShapeWidth);
                System.Console.WriteLine("Enter height for Shape No." + i + "Please");
                String ShapeHeight = Console.ReadLine();
                int sh = int.Parse(ShapeHeight);
                for(int j = 0; j < 4; j++)
                {

                      Rectangle[,] z = new Rectangle[y,4];                    
                Rectangle z[i,j] = new Rectangle(ShapeName, sw, sh);
                }


            }
        }
    }
}

1 Ответ

2 голосов
/ 30 сентября 2011

Во-первых, в вашем производном классе Rectangle вам не нужно переназначать переменные в форме, так как базовый конструктор все равно будет вызываться.

Кроме того, вместо создания строки типа Circle для создания круга было бы более целесообразно создать новый класс Circle: Shapes, в котором реализован другой метод GetArea (), вместо того, чтобы ваш класс прямоугольников вычислял площадь круга.

Ошибка, которую вы, вероятно, имеете, связана со строкой:

Rectangle z[i,j] = new Rectangle(ShapeName, sw, sh);

Поскольку вы уже определили z [i, j] как массив, эта строка должна читаться

z[i,j] = new Rectangle(ShapeName, sw, sh);

(без прямоугольника).

Тем не менее, я подозреваю, что вы хотите определить свой массив прямоугольников за пределами первого цикла for. С текущим кодом вы получите y 2D-массивов с одним столбцом, заполненным для каждого. Вам нужно переместить это: вне первого цикла for Прямоугольник [,] z = новый прямоугольник [y, 4];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...