需要使用ToString方法打印带*的三角形

时间:2018-06-08 17:08:54

标签: c# tostring

我试图弄清楚如何用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 :(得分:1)

这可能是作业,所以我不会为你写出实际的答案,但我会告诉你你的问题是什么。

  1. 您正在实例化new Object(),而不是new Triangle()Object只是所有类继承的基本内容,Triangle实际上是您创建的自定义类。你想用它。

  2. 您的Triangle课程应该在自己的文件中,或者至少与Program分开。例如:

  3. class Triangle
    {
        //override ToString()
    }
    
    class Program
    {
        //This is where your main method should be
    }
    
    1. 您的ToString()方法需要返回一个字符串。调用一堆Console.WriteLine()与该方法应该做的相反。您应该使用StringBuilder或者至少连接字符串来构建您的巨型三角形字符串,然后从方法中返回它。

答案 1 :(得分:0)

1-您需要创建新的Triangle对象而不是对象

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

2-你也应该将值存储在某个字符串变量中并返回它,你正在进行控制台打印!

3-如何在return语句后使用Cosole.ReadKey()。

4-您返回的X变量是什么

5-这是一个简单的解决方案&#34;可能效率不高但无论如何都是简单的程序&#34;

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; 

答案 2 :(得分:0)

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;


    }

}