在Java中的反向嵌套for循环?

14 浏览
0 Comments

在Java中的反向嵌套for循环?

如何打印这个?\n

!!!!!!!!!!!!!!!!!!!!!!
\\!!!!!!!!!!!!!!!!!!//
\\\\!!!!!!!!!!!!!!////
\\\\\\!!!!!!!!!!//////
\\\\\\\\!!!!!!////////
\\\\\\\\\\!!//////////

\n我有:\n

public class SlashFigure {
    public static void main(String[] args){
        first();
    }
    
    
        public static void first() {
            for ( int i= 1; i<=6; i++) {
                for (int l = 0; l <= 2 * i -2; l++) {
                    System.out.print("\\");
                }
                        for (int e = 22; e >= -2*i + 26; e-=1) {
                            System.out.print("!");
                        }
                                for (int r = 0; r <= 2 * i -2; r++) {
                                    System.out.print("/");
                                }
                      System.out.println();
            }
        }
    }

\n它正在打印这个:\n

\/
\\\!///
\\\\\!!!/////
\\\\\\\!!!!!///////
\\\\\\\\\!!!!!!!/////////
\\\\\\\\\\\!!!!!!!!!///////////

0
0 Comments

嵌套的for循环被用于打印特定的图案,但实际上只需要一个外部的循环来逐行处理。现有的代码中,有四个嵌套的for循环,但实际上只需要一个外部的循环来处理整个图案的每一行。

为了更高效地实现这个图案,可以将初始的for循环语句for(int i=0修改为for(int i=0,j=0,k=0),并且使用两个for(k=0)循环来打印'\\'和'//',因为它们属于相同的组。

修改后的代码如下所示:

for(int i = 0, j = 0, k = 0; i < 6; i++, j = 0, k = 0){
    for(k = 0; k < i * 2; k++) System.out.print("\\");
    for(j = i * 2; j < 22 - (i * 2); j++) System.out.print("!");
    for(k = 0; k < i * 2; k++) System.out.print("/");
    System.out.println();
}

通过这种方式,可以减少嵌套的for循环的数量,提高代码的可读性和效率。

0
0 Comments

问题的原因是编写的代码过于冗长。所展示的代码模式是line * 2 * \ + 22 - line * 4 * ! + line * 2 * /,总共有6行,但它们都是由2个字符组成的组,所以我们可以将所有这些除以2,观察到\\//遵循相同的规则。

为了解决这个问题,可以使用嵌套的反向for循环来简化代码。下面是一个示例解决方法:

for(int i=0, j=0, k=0; i<6; i++) {
  for(j=0; j<i; j++) { System.out.print("\\\\"); }
  for(k=0; k<(11-2*i); k++) { System.out.print("!!"); }
  for(j=0; j<i; j++) { System.out.print("//"); }
  System.out.println();
}

这段代码简化了原始的代码逻辑,并使用嵌套的for循环来生成所需的图案。通过逐渐增加和减少特定字符的数量,可以实现所需的图案。

通过使用这种简化的代码,可以减少代码行数,并更清晰地表达出所需的图案。这种方法还可以提高代码的可读性和可维护性。

0