循环程序直到0(退出)(java)

时间:2014-09-06 19:40:01

标签: java loops exit restriction

我有这个java代码,基本上只打印一个X高度的圣诞树。但是,程序要求编号,然后打印树然后结束。我希望它循环直到我输入0,这将是结束程序,我也想打印只有输入的数字是1-40(不超过40)。我在java世界开始,我不知道该怎么做。现在我的代码:

public class xtree {

    public static void main(String[] args)
    {
        Scanner scan = new Scanner(in);
        out.print("please enter a number: ");
        int temp = scan.nextInt();
        int x = (temp-1)*2 +1; 
        int y = x/2;  
        int z = 1;  
        for(int i=0; i<temp-1; i++) 
        {
            for(int j=0; j<=y; j++) 
            {
                out.print(" ");
            }
            for(int k = 0; k<z; k++) 
            {
                out.print("*");
            }
            out.println(); 
            y--;
            z+=2; 
        }
        for(int i =0; i<=x/2; i++) 
        {
            out.print(" ");
        }
        out.println("*"); 
    }
}

谢谢,我是java的初学者所以请宽容;)

3 个答案:

答案 0 :(得分:3)

好吧,我会把方法分成两部分:

  • printChristmasTree方法,接受高度作为参数
  • 您的main方法,仅处理用户输入并致电printChristmasTree或退出

您当前的大多数main方法都会进入printChristmasTree,而main将是一个循环。类似的东西:

public static void main(String[] args) {
    Scanner scan = new Scanner(in);
    while (true) {
        System.out.print("Please enter a number (0-40): ");
        int height = scan.nextInt();
        if (height == 0) {
            // Exit the program
            return;
        } else if (height >= 1 && height <= 40) {
            printChristmasTree(height);
        } else {
            System.out.println("Invalid input.");
        }
    }
}

您可以使用其他方法而不是从while (true)循环返回,但这看起来对我来说最简单。

在我看来,将“获取输入”与“打印圣诞树”方面的分离导致代码比将它们组合在一起更加可读 - 并且在编写不同的程序以进行打印方面更加灵活所有有效的圣诞树。

答案 1 :(得分:0)

使用while循环:

    Scanner scan = new Scanner(System.in);
    System.out.print("please enter a number: ");

    int temp = scan.nextInt();
    while (temp>0) {
        int x = (temp-1)*2 +1; 
        int y = x/2;  
        int z = 1;  
        for(int i=0; i<temp-1; i++) 
        {
            for(int j=0; j<=y; j++) 
            {
                System.out.print(" ");
            }
            for(int k = 0; k<z; k++) 
            {
                System.out.print("*");
            }
            System.out.println(); 
            y--;
            z+=2; 
        }
        for(int i =0; i<=x/2; i++) 
        {
            System.out.print(" ");
        }
        System.out.println("*");
        temp = scan.nextInt();
    }

答案 2 :(得分:0)

以下是执行此操作的代码:

public class xtree {

    public static void main(String[] args)
    {
        int temp;
        do{
            Scanner scan = new Scanner(in);
            out.print("please enter a number: ");
            temp = scan.nextInt();

            if(temp >= 1 && temp <= 40){ //don't display a tree higher than 40
                int x = (temp-1)*2 +1; 
                int y = x/2;  
                int z = 1;  
                for(int i=0; i<temp-1; i++) 
                {
                    for(int j=0; j<=y; j++) 
                    {
                        out.print(" ");
                    }
                    for(int k = 0; k<z; k++) 
                    {
                        out.print("*");
                    }
                    out.println(); 
                    y--;
                    z+=2; 
                }
                for(int i =0; i<=x/2; i++) 
                {
                    out.print(" ");
                }
                out.println("*"); 
            }else if(temp != 0){
                out.print("Please enter a number between 1 and 40!");
            }
        }while(temp != 0);
    }
}