Необходимо использовать метод ToString для печати треугольников с * - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь выяснить, как с помощью метода ToString отобразить треугольники, которые я сделал, используя символ * во вложенных циклах for.У меня хорошее понимание метода ToString, но я понятия не имею, как на самом деле использовать циклы for в возвращаемом значении.

using System;

public class Triangle
{
    public static void Main(string[ ] args)
    {
        Object obj = new Object( );
        Console.WriteLine(obj.ToString( ));
    }

    public override string ToString( )
    {
        for(int row = 1; row <= 10; ++row)
        {
            for(int col = 1; col <= row; ++col)
            {
                Console.Write("*");
            }

            Console.WriteLine( );
        }

        Console.WriteLine( );

        for(int row = 10; row >= 1; --row)
        {
            for(int col = 1; col <= row; ++col)
            {
                Console.Write("*");
            }

            Console.WriteLine( );
        }

        Console.WriteLine( );

        for(int row = 10; row >= 1; --row)
        {
            for(int col = 1; col <= row; ++col)
            {
                Console.Write("*");
            }

            Console.WriteLine( );
        }

        Console.WriteLine( );

        for(int row = 1; row <= 10; ++row)
        {
            for(int col = 1; col <= row; ++col)
            {
                Console.Write("*");
            }

            Console.WriteLine( );
        }
        return x;
        Console.ReadKey( );
    }
}

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

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

  1. Вы создаете экземпляр new Object() вместоnew Triangle().Object - это просто самая базовая вещь, от которой наследуются все классы, Triangle - это фактически пользовательский класс, который вы создали.Вы хотите использовать это.

  2. Ваш класс Triangle должен находиться в отдельном файле или, по крайней мере, отдельно от Program.Так, например:

class Triangle
{
    //override ToString()
}

class Program
{
    //This is where your main method should be
}
Ваш метод ToString() должен вернуть строку.Вызов набора Console.WriteLine() противоречит тому, что должен делать метод.Вы должны использовать StringBuilder или хотя бы конкатенировать строки, чтобы построить свою гигантскую треугольную строку, а затем вернуть ее из метода.
0 голосов
/ 08 июня 2018
using System;
using System.Text;

public class Triangle
{
    StringBuilder sb = new StringBuilder( );

    public static void Main(string[ ] args)
    {
        Triangle tri = new Triangle( );

        Console.WriteLine(tri.ToString());
        Console.ReadKey( );
    }

    public override string ToString( )
    {

        for(int row = 1; row <= 10; ++row)
        {
            for(int col = 1; col <= row; ++col)
            {
                sb.Append("*");
            }
            sb.Append("\n");

        }

        sb.Append("\n");

        for(int row = 10; row >= 1; --row)
        {
            for(int col = 1; col <= row; ++col)
            {
                sb.Append("*");
            }
            sb.Append("\n");
        }

        sb.Append("\n");

        for(int row = 10; row >= 1; row--) // Outer Loop for number of rows
        {
            for(int col = 1; col <= 10 - row; col++)         //Inner loop for number of spaces
            {
                sb.Append(" ");
            }
            for(int k = 1; k <= row; k++)  //Secondary inner loop for number of stars
            {
                sb.Append("*");
            }
            sb.Append("\n");

        }

        sb.Append("\n");

        for(int row = 1; row <= 10; row++)               //Outer Loop for number of rows
        {
            for(int col = 1; col <= 10 - row; col++)         //Inner loop for number of spaces
            {
                sb.Append(" ");
            }
            for(int k = 1; k <= row; k++)  //Secondary inner loop for number of stars
            {
                sb.Append("*");
            }
            sb.Append("\n");
        }
        string s = sb.ToString( );

        return s;


    }

}
0 голосов
/ 08 июня 2018

1 - Вам нужно создать новый объект Triangle, а не объект

Triangle tri= new Triagle();
Console.WriteLine(tri.ToString());

2 - также вы должны сохранить значение в некоторой строковой переменной и вернуть ее, вы печатаете на консоли!

3 - также то, как вы используете Cosole.ReadKey () после оператора return.

4 - Что это за переменная X, которую вы возвращаете

5 - Есть простое решение ", возможно, неэффективно, нов любом случае это простая программа "

let's say your row count is 5
string returnVal = "";
for (int i = 0; i < 5; i++) 
  returnVal + ="    *********".Substring(i, 5 + i)+"\n";
return returnVal; 
...