如何使用Java打印以下星形图案?
* - ***********
*** - *********
***** - *******
******* - *****
********* - ***
*********** - *
我是Java的新手,我尝试打印矩形循环,但是如何在矩形内部打印-?
public static void main(String[] args) {
for (int i = 0; i < 6; i++)
{
for (int j = 0; j <= 14; j++)
{
System.out.print("*");
}
System.out.println();
}
}
答案 0 :(得分:4)
连字符是在奇数星号后打印的。
在第一行中出现一颗星后。
第二行三颗星之后。
第三行中的五颗星之后。
以此类推。
我们可以从外部循环变量i
中找到何时打印连字符。
因此,您可以查看j
的值是否等于2i
,如果为true,则打印连字符。
for (int i = 0; i < 6; i++)
{
for (int j = 0; j <= 11; j++)
{
System.out.print("*");
if (j == i * 2) {
System.out.print(" - ");
}
}
System.out.println();
}
答案 1 :(得分:1)
尝试这个。您必须声明新变量“ count = 0”并在外部循环中迭代2。
public static void main(String[] args) {
int count = 1;
for(int i = 0; i < 6; i++){
for(int j =0 ; j<13; j++){
if(count==j){
System.out.print(" - ");
}
else
System.out.print("*");
}
count = count+2;
System.out.println("");
}
}
输出:
* - ***********
*** - *********
***** - *******
******* - *****
********* - ***
*********** - *
答案 2 :(得分:0)
一种非常简单的方法呢:只需将原始字符串右移2个位置:
public static void printStarPattern() {
String str = "* - ***********";
int length = str.length();
int offs = 2;
for (int row = 0; row < 6; row++) {
System.out.println(str);
// rotate string to 'offs' positions right
str = str.substring(str.length() - offs) + str.substring(0, length - offs);
}
}