如何使用java在控制台中获取zig zag输出?

时间:2016-10-07 22:00:07

标签: java arrays for-loop infinite-loop

我对编码很新,而且不是很擅长:(

我几个小时以来一直在努力为我的班级做一个项目,而且我几乎没有用过互联网。

我需要让它出现在我的控制台上,好像一个球来回弹跳,球弹跳的宽度由用户设定。

到目前为止,我的输出只产生一个无限的左右对角线,跨越用户选择的宽度。

到目前为止我的代码:

import java.util.Scanner;

public class Midterm1_1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner (System.in);
        double yourNum;
        System.out.println("How many spaces wide would you like the ball to bounce?");
        yourNum= scan.nextDouble();
        String ballBounce = new String ("o")
        int count = 0;
        while (count < 50){
            System.out.println(ballBounce);
            String x = " ";
            for (int row = 1; row < yourNum; row++) {
                System.out.println(x+"o");
                x+= " ";
            }
        }
    }
}   

如何让它从右向左返回?我的假设是另一个声明。但到目前为止,我所尝试的一切都无效。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

下面的代码不一定是最短的代码,它意味着给OP提供一些想法,但不向她/他提供直接的答案。如果OP将按原样复制代码并且不适应它,那么教师应该从某个地方复制代码。如果OP了解它,将很容易清理和简化解决方案。

下面有两种方法,只有在您阅读完代码后才能选择 (还有一个我故意删除的:这是一个学习练习,所以很明显留作练习。

对于第一种方法(paintBallAt_1),请阅读PrintStream.printf

对于第二种方法(paintBallAt_2),请阅读String.substring

public class Midterm1_1 {
    static private String ballBounce = "o";


    public static void paintBallAt_1(int x) {
       if(x==0) {
           System.out.println("o");
       }
       else {
           // will get your format strings as "%1$1c\n", "%1$2c\n", etc
           String formatString="%1$"+x+"c\n";
           System.out.printf(formatString, 'o');
       }
    }

    // 6x20=120 spaces at max. Limit or expand them how you see fit
    static public final String filler=
        "                    "+
        "                    "+
        "                    "+
        "                    "+
        "                    "+
        "                    "
    ;
    static public final int MAX_BOUNCE=filler.length();

    public static void paintBallAt_2(int x) {
       if(x>MAX_BOUNCE) {
         x=MAX_BOUNCE;
       }
       if(x<0) {
          x=0;
       }
       String bounceSpace=filler.substring(0, x);
       System.out.println(bounceSpace+"o");
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner (System.in);
        int yourNum;
        System.out.println("How many spaces wide would you like the ball to bounce?");
        yourNum= scan.nextInt();
        int count = 0;
        while (count < 50) {
            System.out.println(ballBounce);
            String x = " ";
            for (int row = 1; row < yourNum; row++) {
                System.out.println(x+"o");
                x+= " ";
            }

            // bounce it to the left
            for (int row = yourNum-1; row >= 0; row--) {
                switch(row % 2) {
                   case 0:
                        paintBallAt_1(row);
                        break;
                   default:
                        paintBallAt_2(row);
                        break;
                }
            }
        }
    }
}