0

我正在尝试制作一条应如下所示的对角线:

*
 *
  *
   *
    *
     *
      *
       *
        *

我必须使用嵌套循环,并且我正在使用一个名为 Java 的程序准备好使用 java 进行编程。这是我的代码,它很接近,但我似乎无法弄清楚如何使它成为对角线。

// The "E006" class.
import java.awt.*;
import hsa.Console;

public class E006
{
    static Console c;           // The output console

    public static void main (String[] args)
    {
        c = new Console ();
        int i, j;
        for(i = 1; i <= 1; i++)
            for(j = 1; j < 10; j++)
                c.println("*");

    } // main method
} // E006 class

我确信这是非常简单的事情,但我才刚刚开始,所以我不太确定该怎么做。我必须使用嵌套循环(循环内的循环)。

如果有人可以帮助我,那将是一个很大的帮助。

4

5 回答 5

1

这听起来像是一项学校作业,所以我不会为你解决它。这里有一些提示:

  • 您需要打印空格,而不仅仅是星号
  • 您需要在每行打印更多空格
  • 你的第一个 for 循环只执行一次,循环发生一次有什么好处
  • 如果缩进更好,您的代码会更容易阅读。即使不需要,也要在 for 循环周围使用括号。

int i, j;
for(i = 1; i <= 1; i++){
    for(j = 1; j < 10; j++){
        c.println("*");
    }
 }
于 2013-03-04T02:35:31.090 回答
0

第一个循环应该超过您要打印的 * 行项目的数量。第二个内部循环应在打印星号之前打印空格。我真的没有看到嵌套循环的用途。但如果你必须使用它们:

for (int i = 0; i < lineSegments; i++) { 
   int whitespaces = 0;
   for (int j = 0; j < whiteSpaces; j++)
       Console.print(" ");
   Console.print("*\n");
   whitespaces++;
   Console.flush();
}
于 2013-03-04T02:34:43.610 回答
0
public class Hehh{
    public static void main(String[] args){
    int i, j;
        for(i = 0; i < 9; i++){
        for(j = 0; j <= i; j++){
                if(j == i) System.out.println("*");
                else System.out.print(" ");
            }
    }
    }
}
于 2013-03-04T02:35:11.303 回答
0

您只需要使用正确的循环结构。你有比较部分很好,只是将迭代器向下移动到从 0 开始,因为它更自然地解决这个问题。

您也应该在进行过程中构建字符串。

// The "E006" class.
import java.awt.*;
import hsa.Console;

public class E006
{
    static Console c;           // The output console

    public static void main (String[] args)
    {
    c = new Console ();
    final int NUM_ROWS = 10 // set this for number of rows
    int i, j;
    for(i = 0; i < NUM_ROWS; i++) {
        String thisLine = "";
        for(j = ; j < i; j++) {
            thisLine += " ";
        } // inner loop
        thisLine += "*";
        c.println(thisLine);
    } // outer loop

    } // main method
} // E006 class
于 2013-03-04T02:38:39.757 回答
-1

我认为这是您的意图(未经测试):

// The "E006" class.
import java.awt.*;
import hsa.Console;

public class E006
{
    static Console c;           // The output console

    public static void main (String[] args)
    {
        c = new Console();
        int i, j;
        for(i = 0; i < 10; i++) {
            for(j = 0; j < i; j++) {
                c.print(" ");
            }
            c.println("*");
        }
    } // main method
} // E006 class

为什么它(应该)起作用?在第一个循环 (i=0) 中,它循环 0 次打印空格,然后添加一个带有换行符的星号(println 在末尾添加一个换行符)。下一个循环,它在星号前打印一个空格,下一个打印 2,依此类推。

ps 这是作业吗?你应该标记它。

于 2013-03-04T02:33:33.123 回答