我有这个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的初学者所以请宽容;)
答案 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);
}
}