0

是的,这是作业,但我不知道如何仅使用 for 循环来完成它。

在此处输入图像描述

我能够使用 for 循环和 if else 语句重现该结构,但我的教练告诉我这不会飞。

public class Problem3 {
public static void main(String[] args) {
    /** Code under here */
        int box = 22;
        for(int i=22; i>0; i--)
        {
         if(i==18)
             System.out.println("\\\\"+"!!!!!!!!!!!!!!!!!!"+"//");
         else if(i == 14) 
             System.out.println("\\\\\\\\"+"!!!!!!!!!!!!!!"+"////");
         else if (i== 10)
             System.out.println("\\\\\\\\\\\\"+"!!!!!!!!!!"+"//////");
         else if (i == 6)
             System.out.println("\\\\\\\\\\\\\\\\"+"!!!!!!"+"////////");
         else if (i == 2)
             System.out.println("\\\\\\\\\\\\\\\\\\\\"+"!!"+"//////////");
         else if(i == 22)
             System.out.println("!!!!!!!!!!!!!!!!!!!!!!");
        }


   System.out.println("");
}    
}
4

6 回答 6

4

一些提示:

  • 线条总是对称的
  • \可以从行号计算出行首的个数(从0开始)
  • 一行的字符数是恒定的,所以!如果知道有多少,也可以计算出个数\

基于这些观察,您应该能够生成只有 2 级嵌套循环的代码(我没有说 2 级循环,只有 2 级)。

于 2013-10-21T15:23:46.467 回答
1

一行有22个字符,行n2*(n-1) \字符,2*(n-1) /字符和22 - 4*(n-1) !字符。

您应该首先构建要打印的字符串(对于每一行)。这将涉及重复字符(这个问题提供了一些想法)

于 2013-10-21T15:26:06.110 回答
0

请注意,每次,每边都有两个斜杠/反斜杠(因此!中间少了四个)。您可以创建一个for循环来增加斜杠的数量,并计算!要打印的 s 的数量以将长度填充到22,然后打印出当前行的所有必要字符。

于 2013-10-21T15:25:27.573 回答
0

请注意,在每行 i 中(如果从 0 开始编号)\,开头有 2 * i 个字符,末尾有 2 * i '/' 字符,其余行用 '!' 填充 人物。

所以你的代码看起来像:

for ( int row = 0; row < 6; row++ ) {
  int slashes = 2 * row;
  for ( int slash = 0; slash < slashes; slash++ ) {
    // Print a `\`
  }
  // Work out how many '!'s you need and print them.
  // ... you try this bit
  for ( int slash = 0; slash < slashes; slash++ ) {
    // Print a `/`
  }
}
于 2013-10-21T15:24:54.433 回答
0

这够好吗?我也在学java。反馈表示赞赏。

    public class Problem3 {
public static void main(String[] args) {
    /** Code under here */
    int box = 22;
    int line = 0;
    String char_1 = "w";
    String char_2 = "q";
    String char_3 = "e";
    String string = "";
    for (int i = 0; i < 6; i++) {
        for (int j = 0; j < line * 2; j++) {
            System.out.print(char_1);
        }
        for (int k = box; k > 0; k --) {
            System.out.print(char_2);
        }
        for (int l = 0; l < line * 2; l++){
            System.out.print(char_3);
        }
        System.out.println(string);
        line++;
        box = box - 4;
    }

}

}

于 2013-10-21T16:40:51.110 回答
-1

是预期输出中的number_of_lines行数(在本例中为 6)。number_of_characters是每行应包含的字符数(在本例中为 22)。

我们知道有一个模式。左边有\,中间有!,右边有/。这意味着我们需要一个外循环来循环这些行,并且每个部分都需要三个内循环。

我们如何知道每个角色需要多少个?

第一行有 0 \、 22!和 0/

第二行有 2 \、 18!和 2/

第三行有 4 \、 14!和 4/

第四行有 6 \、 10!和 6/

第五行有 6 \、 10!和 6/

第六行有 8 \、 6!和 8/

第七行有 10 \、 2!和 10/

有一个模式。每行的\and/计数递增 2,!计数递减 4。

Number of\等于当前行号的两倍(假设第一个行号为 0)。也一样/。的数量!是每行预期的字符总数减去当前行号的四倍(假设第一行号为 0)。

public void printCoolStuff(int number_of_lines, int number_of_characters){

    for(int i = 0; i < number_of_lines; i ++){

        String left= "";
        for(int j = 0; j < (2*i); j++){
            left= left+ "\"
        }

        String middle = "";
        for(int j = 0; j < (number_of_characters - 4*i); j++){
            middle = middle + "!"
        }

        String right= "";
        for(int j = 0; j < (2*i); j++){
            right = right + "/"
        }

        System.out.println(left+middle+right);
    }
}
于 2013-10-21T15:26:29.110 回答