Java patten在for循环内绘制

时间:2020-05-29 08:03:43

标签: java for-loop

我在编程界和Javaland都是新手。 我正在尝试学习循环并用它解决模式。

我想使用for循环绘制此模式:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {
        List<HashMap<String, String>> input = new ArrayList<>();
        HashMap<String, String> subinput1 = new HashMap<>();
        subinput1.put("name", "name1");
        subinput1.put("rollno", "rollno1");
        input.add(subinput1);
        HashMap<String, String> subinput2 = new HashMap<>();
        subinput2.put("name", "name2");
        subinput2.put("rollno", "rollno2");
        input.add(subinput2);
        HashMap<String, HashMap<String, String>> result = (HashMap<String, HashMap<String, String>>) input.stream()
                .collect(Collectors.toMap(v -> (String) v.get("rollno"), e -> e));
        System.out.println(result);
    }
}

我正在使用以下代码来实现这一目标:

*
**
***
****
*****

但是,我只能在15行中得到*,而不是在模式中。 拜托,有人可以在这里帮助解决此问题吗?

先谢谢了。

3 个答案:

答案 0 :(得分:4)

如果您使用的是JDK 11,则可以编写以下代码:

for(int i = 0; i < 5; i++) {
    System.out.println("*".repeat(i+1));
}

使用String.repeat(),您可以用更少的代码完成相同的事情。

答案 1 :(得分:2)

您的for循环似乎很奇怪。

应该这样读取循环:

对于从int开始的i 0,循环只要 i<5,然后 次,执行i++

for(int i = 0; i<5, i++){
   System.out.println("*" \n);
}

这将打印5行:

*

*

*

*

*

现在每行中都需要一个*,并且您可能想要删除\n中已经包含的println 因此,无需打印"*",而是在循环之前创建一个String,并在每次迭代时向其中添加一个新的*

String line ="";             // we start with an empty string
for(int i=0; i<5; i++){      
   line= line+"*";           // before printing we add a new *
   System.out.println(line); // then we print it 
}

它应该(未经测试)导致以下结果:

*
**
***
****
*****

答案 2 :(得分:1)

尝试此代码:

public class Main {
    public static void main(String[] args) {

        int i, j, n =5;  
        for(i=0; i<n; i++) {           
            for(j=0; j<=i; j++) {       
                System.out.print("*");
            }
            System.out.println();
        }
    }       
}