如何使用命令行参数在java中用星号创建一个盒子?

时间:2016-03-31 01:39:13

标签: java

我想要创建一个程序,其中用户输入高度和宽度作为命令行参数,程序创建一个由星号构成的框,例如: 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循环。

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);