public class tree {
public static void main(String[] args) {
int n ;
Scanner input = new Scanner(System.in);
System.out.println("Input value n:");
n = input.nextInt();
for (int i = 0; i < n; i=i+2) {
for (int j = n/2; j==0; j--)
System.out.print(" ");
for (int k = 0; k <=i ; k++)
System.out.print("#");
System.out.println();
}
}
这是任务中的要求:
我需要修理什么? 以及如何在从主程序调用的函数中执行打印?
答案 0 :(得分:0)
这是一些代码。从这个
获取一些想法public static void main(String[] args) {
Scanner s = new Scanner(System.in);
//Enter how much line do you need in your tree
System.out.print("Input value n:");
int n = s.nextInt();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++)
System.out.print(" ");
for (int k = 0; k < (2 * i + 1); k++)
System.out.print("*");
System.out.println();
}
}
}
答案 1 :(得分:0)
请注意,您的代码会打印*
个字符,但应该打印#
个字符,并且#
字符之间应该有单个空格。
Wrong Correct
* #
*** # # #
***** # # # # #
******* # # # # # # #
所以,为了它的乐趣,这是一种非传统的方式来为任何大小的树做正确的方法:
private static void printChristmasTree(int n) {
final int w = n * 2 - 1;
char[] buf = new char[w * 3 - 2];
Arrays.fill(buf, ' ');
for (int i = w - 1; i < buf.length; i += 2)
buf[i] = '#';
for (int s = 0; s < w; s += 2)
System.out.println(new String(buf, s, s + w));
}
printChristmasTree(6)
的输出:
#
# # #
# # # # #
# # # # # # #
# # # # # # # # #
# # # # # # # # # # #
无论如何,回到你的代码。您n = 6
的输出是:
*
***
*****
您的外部for
循环使用i=i+2
1 ,这意味着您只需要获得所需行数的一半。可以更改为i++
,也可以将条件更改为i < n * 2
。让我们选择第二种选择,即使你打算在星星之间打印空间也是有意义的
1)更好地写为i += 2
将输出更改为:
*
***
*****
*******
*********
***********
现在行数正确,每行的星数正确。让我们来看看你的空间缩进循环。
自j = n/2 = 3
以来,条件j==0
立即为假,这就是您没有获得任何空格的原因。
也许您的意思是j != 0
,但问题是循环不使用i
值,因此总是会打印3个空格。我们可以通过使用j = n - i / 2 - 1
开始循环来解决这个问题。
固定代码:
private static void printChristmasTree(int n) {
for (int i = 0; i < n * 2; i += 2) {
for (int j = n - i / 2 - 1; j > 0; j--)
System.out.print(" ");
for (int k = 0; k <= i; k++)
System.out.print("*");
System.out.println();
}
}
输出:
*
***
*****
*******
*********
***********
如果我们之前选择了第一个选项,即更改为i++
,代码将会(稍有其他一些变化):
private static void printChristmasTree(int n) {
for (int i = 0; i < n; i++) {
for (int j = n - 1; j > i; j--)
System.out.print(' ');
for (int j = i * 2; j >= 0; j--)
System.out.print('*');
System.out.println();
}
}