无法弄清楚For Loop

时间:2018-11-28 04:27:42

标签: java

我最近开始使用Java,因此很遗憾。我今天在课堂上提出了一个关于for循环问题的问题,但我无法弄清楚其中的一部分。 我们应该打印出来:

                           __1__   
                           _333_
                           55555

仅用于循环。

我已经开始编写代码,但是尽管找出了空格,但仍不知道该怎么做来打印数字。

public class Question{
public static void main(String [] args){
    for(int j=1; j<=3;j++){
        for(int i=1; i<=3-j; i++){
        System.out.print(" ");
    }
        for(int k=?; k<=?; k??){
        System.out.print(???);
    }
        for(int m=1; m<=3-j; m++){
        System.out.print(" ");
    }
        System.out.println();
}

问号是我不知道那里发生什么的地方。 谢谢。

4 个答案:

答案 0 :(得分:0)

您可以这样做,

class Main {
    public static void main(String[] args) {
        int i, j, k;
        for (i = 1; i <= 3; i++) {
            for (j = 2; j >= i; j--) {
                System.out.print("_");
            }
            for (k = 1; k <= (2 * i - 1); k++) {
                System.out.print(i * 2 - 1);
            }
            for (j = 2; j >= i; j--) {
                System.out.print("_");
            }
            System.out.println();
        }
    }
}

第一个for循环将在数字之前打印_,第二个将在数字之后打印_

答案 1 :(得分:0)

每次s='Hello I am <name>, and i love to eat <food>' r = ('John Doe','Pizza') d = {'name':r[0],'food':r[1]} print(s.replace('<','{').replace('>','}').format(**d)) 递增时,值将改变两个,这导致公式j可以完成循环。喜欢,

1 + (2 * (j - 1))

输出

for (int j = 1; j <= 3; j++) {
    for (int i = 1; i <= 3 - j; i++) {
        System.out.print(" ");
    }
    int n = 1 + (2 * (j - 1));
    for (int k = 1; k <= n; k++) {
        System.out.print(n);
    }
    for (int m = 1; m <= 3 - j; m++) {
        System.out.print(" ");
    }
    System.out.println();
}

答案 2 :(得分:0)

感谢大家的帮助。我想出了答案。

public class Welcome {
public static void main(String [] args){
    for(int j=1; j<=3;j++){
        for(int i=1; i<=3-j; i++){
        System.out.print(" ");
    }
        for(int k=1; k<=(2*j-1); k++){
        System.out.print(2*j-1);
    }
        for(int m=1; m<=3-j; m++){
        System.out.print(" ");
    }
        System.out.println();
    }
}

}

答案 3 :(得分:0)

这也可以通过以下方式实现

public class ForLoopPrinter {
    public static void main(String[] args) {
        int number = 1;
        int row = 3;
        int column = 5;
        char space = '_';
        for(int i = 1; i <= row; i++){
                for(int j = 1; j <=column;j++){
                        int offset = (column - number)/2;
                        if( j <= offset ||
                                j > (number + offset)){
                                System.out.print(space);
                        }else{
                                System.out.print(number);
                        }
                }
                System.out.println();
                number += 2;
        }
    }
}

此处的For循环数限制为2(一个用于行,一个用于列)。

逻辑像这样-

  1. 偏移为您提供了要在数字两面打印的空格数。
  2. 如果条件检查j(位置)是否小于或大于偏移量,则为true;如果为true,则打印下划线;如果为false,则打印数字

我知道这个问题已经给出了正确的答案,它将像魅力一样起作用。我只是尝试通过减少之前提供的答案中的For循环次数来优化代码。减少For循环将提高性能。

除了减少For循环外,此代码还具有以下优点 -此代码更具扩展性。只需将行,列值(例如5,9)或空格字符更改为“ *”并检查输出即可。你可以玩。

我建议您使用@Sand给出的答案以了解For循环,然后检查此答案以了解如何对其进行优化。