我试图弄清楚如何用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( );
}
}
答案 0 :(得分:1)
这可能是作业,所以我不会为你写出实际的答案,但我会告诉你你的问题是什么。
您正在实例化new Object()
,而不是new Triangle()
。 Object
只是所有类继承的基本内容,Triangle
实际上是您创建的自定义类。你想用它。
您的Triangle
课程应该在自己的文件中,或者至少与Program
分开。例如:
class Triangle
{
//override ToString()
}
class Program
{
//This is where your main method should be
}
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;
}
}