我想要创建一个程序,其中用户输入高度和宽度作为命令行参数,程序创建一个由星号构成的框,例如: java Box。
public class Box {
public static void main(String[] args) {
for (int i = 0; i < height; i++) {
System.out.print("*");
System.out.println("");
}
}
}
到目前为止,我有命令行的参数,但不确定如何打印星号。我有一种感觉需要2循环。
答案 0 :(得分:1)
我认为答案是在某个条件下在另一个内部循环。
首先尝试打印您将使用width参数的框的第一行(或最后一行)(使用for循环)。
然后打印框的任何一行,因此您需要使用条件来了解该行是第一行还是最后一行。如果没有,那么程序应该打印一个星号,然后是空格,最后打印另一个星号(使用另一个if-else条件)。
最后,你所拥有的一切都进入了一个for循环,其中行从1开始并以高度值结束。
我希望这会对你有所帮助。
答案 1 :(得分:0)
因此,如果使用参数10 5
执行代码,我假设您希望输出为:
**********
* *
* *
* *
**********
使用辅助方法可以做到最好:
private static String repeat(char ch, int count) {
char[] buf = new char[count];
Arrays.fill(buf, ch);
return new String(buf);
}
然后你的代码会是这样的:
System.out.println(repeat('*', width));
for (int i = 2; i < height; i++)
System.out.println('*' + repeat(' ', width - 2) + '*');
System.out.println(repeat('*', width));
我会留给您调整此代码以处理width
和/或height
值为1。
当然,也许你打算打印这个(这也是一个用星号&#34; 制作的&#34;盒子):
**********
**********
**********
**********
**********
这更简单:
char[] buf = new char[width];
Arrays.fill(buf, '*');
for (int i = 0; i < height; i++)
System.out.println(buf);