Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中缩放图形时的For循环输出_Java_Loops_For Loop - Fatal编程技术网

java中缩放图形时的For循环输出

java中缩放图形时的For循环输出,java,loops,for-loop,Java,Loops,For Loop,缩放时,我无法使for循环使用我的“figure”运行正确的次数。 这里的直线常数是缩放“数字” 我面临的问题就在这里,我认为: for(int k = 0; k < LINES; k++){ System.out.print("*******"); } for(int k=0;k

缩放时,我无法使for循环使用我的“figure”运行正确的次数。 这里的直线常数是缩放“数字”

我面临的问题就在这里,我认为:

for(int k = 0; k < LINES; k++){
    System.out.print("*******");
}
for(int k=0;k
它应该在底部画一条线

这是我生成某种楼梯图形的全部代码

public class PP5 {
public static int j;
public static final int LINES = 5;
public static void main(String[] args) {
    for(j = 0 ; j < LINES; j++){

        fSpaces();
        System.out.print("  o   *******");
        bSpaces();
        System.out.println("*");
        fSpaces();
        System.out.print(" /|\\  *");
        bbSpaces();
        System.out.println("*");
        fSpaces();
        System.out.print(" / \\  *");
        bbSpaces();
        System.out.println("*");
    }
    for(int k = 0; k < LINES; k++){
        System.out.print("*******");
    }
}



public static void fSpaces(){
    for(int i = (LINES-1); i > j; i--){
        System.out.print("      ");
    }
}
public static void bSpaces(){
    for(int i = 0; i < j; i++){
        System.out.print("      ");
    }
}
public static void bbSpaces(){
    for(int i = 0; i < j+1; i++){
        System.out.print("      ");
    }
}
}
公共类PP5{
公共静态int j;
公共静态最终整数行=5;
公共静态void main(字符串[]args){
对于(j=0;jj;i--){
系统输出打印(“”);
}
}
公共静态void bSpaces(){
对于(int i=0;i
高度赞赏任何优化。
谢谢

您需要38颗星,您正在打印35颗星

38=(6(Every increment) * 6 (No of times) )+2 (first increment is of 8[6+2])

No of times =6 Because indexing starts from 0 (0,1,2,3,4,5) so in actual counting is 6
所以使用

for(int k = 0; k <(LINES+1)*6; k++){
        System.out.print("*");
    }
    System.out.print("**");// last star

以获得与此类似的效果

                          o   ********
                         /|\  *     |*
                         / \  *     |*
                    o   *******     |*
                   /|\  *     |     |*
                   / \  *     |     |*
              o   *******     |     |*
             /|\  *     |     |     |*
             / \  *     |     |     |*
        o   *******     |     |     |*
       /|\  *     |     |     |     |*
       / \  *     |     |     |     |*
  o   *******     |     |     |     |*
 /|\  *     |     |     |     |     |*
 / \  *     |     |     |     |     |*
**************************************

|_____|_____|_____|_____|_____|_____|_
您需要注意,这部分的每一部分

有六个字符,因此您需要使用六个
*
并将它们打印
行+1次,因为有
行+1次
|uuuuuuuuuu
部分

这将产生

************************************|_

因此,您需要手动添加最后两个
*
,因此将最后一个循环更改为

for (int k = 0; k <= LINES; k++) {
    System.out.print("******");//reduce star numbers by one
}
System.out.print("**");//and add this line

for(intk=0;k在您的实现中,只需替换

for(int k = 0; k < LINES; k++){
    System.out.print("*******");
}
for(int k=0;k

for(int k = 0; k < STEPS+1; k++){
    System.out.print("******");
}
System.out.print("**");
for(int k=0;k

其动机是每一步添加7*和一个重叠。这意味着您需要添加6*而不是7。您需要再添加1倍以匹配顶部部分(但缺少2*:1,因为顶部行由7*和一个列组成).

问题到底是什么。您可以通过发布预期输出和实际输出来说明您的循环打印“******”
次。因此星号总数将是7乘以
。正如您所看到的,它在底线上产生的*不够。如果我通过使for循环产生足够的*数:kfor(int k = 0; k < LINES; k++){ System.out.print("*******"); }
for(int k = 0; k < STEPS+1; k++){
    System.out.print("******");
}
System.out.print("**");