Java打印循环模式

Java打印循环模式,java,Java,我开始学习java。我已经学习了循环,并且正在尝试打印这个模式,基于用户输入告诉我们正方形应该有多少行和字符 -+++ +-++ ++-+ +++- 但我不知道如何让两个嵌套for循环同时运行来实现这一点。有人能帮忙吗?您只需要两个嵌套的循环,当第一个循环的计数器等于第二个循环的计数器时,打印-,否则打印+ 我认为,一旦你有了这个想法,这个代码就很容易产生 祝你好运。以下是支持@YassinHajaj答案的代码: int len = 4; for(int i = 0; i < len;

我开始学习java。我已经学习了循环,并且正在尝试打印这个模式,基于用户输入告诉我们正方形应该有多少行和字符

-+++
+-++
++-+
+++-

但我不知道如何让两个嵌套for循环同时运行来实现这一点。有人能帮忙吗?

您只需要两个嵌套的循环,当第一个循环的计数器等于第二个循环的计数器时,打印
-
,否则打印
+

我认为,一旦你有了这个想法,这个代码就很容易产生


祝你好运。

以下是支持@YassinHajaj答案的代码:

int len = 4;
for(int i = 0; i < len; i++) {//iterates through the rows
  for(int j = 0; j < len; j++) {//iterates through the columns
    if(i == j) {
      System.out.print("-");
    }else{
      System.out.print("+");
    }
  }
  System.out.println("");//print new line after row is finished.
}
int len=4;
for(int i=0;i
下面是一个获取模式的小示例

它以一个循环开始遍历行,然后在“-”之前和“-”之后循环以“+”填充

int计数=8;
for(int i=0;i
这应该很好,注意这里没有使用条件语句,这将适用于任何行数和字符数(ch),而不仅仅限于平方输入

int lines = 4;
int ch = 4;
for(int i=0;i<lines;i++) { //lines
    int ch1 = i%ch;  //mod of current line and number of characters, 
    //Above is for dynamic number of lines and characters, not just square inputs.
    for(int j=0;j<ch1; j++) {
        System.out.print("+");
    }
    System.out.print("-");
    for(int j=ch1;j<ch-1; j++) {
        System.out.print("+");
    }
    System.out.println();
}
int行=4;
int ch=4;

对于(int i=0;i,这里有一个循环解决方案:

int len = 4;
int pos = 1;
for(int i=1;pos<len+1;i++) {
    if(i%(len+1)==0) {
        pos=pos+1;
        i=0;
        System.out.println();
    } else if(i==pos) {
        System.out.print("-");
    } else {
        System.out.print("+");
    }
}

短,非常快,单循环版本:

public static void printSquare(int size) {
    char[] buf = new char[size];
    Arrays.fill(buf, '+');
    for (int i = 0; i < size; i++) {
        buf[i] = '-';
        System.out.println(buf);
        buf[i] = '+';
    }
}
publicstaticvoidprintsquare(int-size){
char[]buf=新字符[大小];
数组。填充(buf,“+”);
对于(int i=0;i
到目前为止,您能显示用户输入和您的代码吗?请告诉我们用户输入将做什么,或者它最适合做什么。您还没有告诉我们有关图案所基于的用户输入的任何信息,或者它如何影响图案的外观。输入是否只是一个数字,即正方形的大小?虚线是否只是一个数字正方形的对角线,其他的都是加号
+
?你的问题陈述不清楚。这不是答案。它可以是注释。@Stackflow这是答案,因为它回答了问题。答案!=code这是答案,我发布了一个示例来说明这个实现。为什么是两个循环?你可以用一个来完成。@StackFl为了简单起见,我在两个循环中完成它。@Stackflow如果你有一个更好的单循环解决方案,为什么你还没有回答这个问题?@Andreas根据请求->是的,它可以用一个循环完成,不,它没有那么优雅或可读性。这是一个单循环解决方案,但请注意,它并不能提高效率,
ifs
很慢你认为if比嵌套循环慢吗?顺便说一句,如果if不只是if,如果它向用户提供更具活力的手,而不需要仅限于一个正方形输出,那么是的。@Mr.Robot我认为你正在失去跟踪该模式仅用于方形设计。好吧,这取决于OP如何看到每个答案。@Andreas答案似乎是这样的s是合法的。
Arrays.fill(char[],char)
使用for循环(至少不嵌套),但这是一个相当有趣的方法solution@phflack当然,它与这里的所有其他解决方案都有点不同,但它确实“阻塞”打印,每行只调用一次
print
,并且没有字符串的开销,因此它肯定也是最快的(每行最少的工作)。当然,对于这样小的东西,性能是无关紧要的(而且还不成熟),但我可以接受你的“有趣”标签;-,虽然可能不是Q想要的,实际上我更喜欢这种方式。我有点惊讶打印
char[]
而不是给出通常的数组打印文本
-+++
+-++
++-+
+++-
public static void printSquare(int size) {
    char[] buf = new char[size];
    Arrays.fill(buf, '+');
    for (int i = 0; i < size; i++) {
        buf[i] = '-';
        System.out.println(buf);
        buf[i] = '+';
    }
}