用输入的数字创建一个星号组成的正方形。

huangapple go评论100阅读模式
英文:

Create a Square of stars with an inputed number

问题

  1. System.out.print("请输入一个数字:");
  2. side = input.nextInt();
  3. for (int i = 0; i < side; i++) {
  4. System.out.print("* ");
  5. }
  6. System.out.println(); // 换行
  7. for (int i = 0; i < side - 2; i++) {
  8. System.out.print("* "); // 左边的星号
  9. for (int j = 0; j < side - 2; j++) {
  10. System.out.print(" "); // 中间的空格
  11. }
  12. System.out.println("* "); // 右边的星号并换行
  13. }
  14. for (int i = 0; i < side; i++) {
  15. System.out.print("* ");
  16. }

输入:

  1. 5

输出:

  1. * * * * *
  2. * *
  3. * *
  4. * *
  5. * * * * *

你的代码存在问题,主要是在打印内部空心部分时没有正确的处理。上面给出的代码在输出上述所需的空心正方形方面是正确的。

英文:

I need a code to help me print a square of stars with an Integer input (in this case the number is 5)
the square must be empty on the inside.

for example:

Looking for this output

  1. * * * * *
  2. * *
  3. * *
  4. * *
  5. * * * * *

what I get

  1. * * * *
  2. *
  3. *
  4. *
  5. * * * *

I am missing my right side of the square.

MY code:

  1. System.out.print(&quot;Please enter a number: &quot;);
  2. side = input.nextInt();
  3. for (int i = 0; i &lt; side - 1; i++) {
  4. System.out.print(&quot;* &quot;);
  5. }
  6. for (int i = 0; i &lt; side; i++) {
  7. System.out.println(&quot;*&quot;);
  8. }
  9. for (int i = 0; i &lt; side; i++) {
  10. System.out.print(&quot;* &quot;);
  11. }
  12. }

input

5

output

  1. * * * *
  2. *
  3. *
  4. *
  5. * * * *

答案1

得分: 1

你可以使用嵌套的 for 循环来实现这个。

  1. for (int i = 0; i < side; i++) {
  2. for (int j = 0; j < side; j++) {
  3. if (i == 0 || i == side - 1 || j == 0 || j == side - 1) {
  4. System.out.print("* ");
  5. } else {
  6. System.out.print(" ");
  7. }
  8. }
  9. System.out.println();
  10. }

如果是第一行/列或者最后一行/列,打印 * ;否则打印两个空格。

英文:

You can do this with a nested for loop.

  1. for (int i = 0; i &lt; side; i++) {
  2. for (int j = 0; j &lt; side; j++) {
  3. if (i == 0 || i == side - 1 || j == 0 || j == side - 1) {
  4. System.out.print(&quot;* &quot;);
  5. } else {
  6. System.out.print(&quot; &quot;);
  7. }
  8. }
  9. System.out.println();
  10. }

Print a * if it is either first row/column or last row/column; otherwise print two spaces.

答案2

得分: 1

  1. 使用一个时间复杂度为O(n)的单个For循环可以完成
  2. public static void main(String[] args) {
  3. System.out.print("请输入一个数字:");
  4. Scanner scanner = new Scanner(System.in);
  5. int number = scanner.nextInt();
  6. if (number >= 3) {
  7. String endPattern = new String(new char[number]).replace("
    使用一个时间复杂度为O(n)的单个For循环可以完成
  8. public static void main(String[] args) {
  9.     System.out.print("请输入一个数字:");
  10.     Scanner scanner = new Scanner(System.in);
  11.     int number = scanner.nextInt();
  12.     if (number >= 3) {
  13.         String endPattern = new String(new char[number]).replace("\0", " *");
  14.         String midPattern = String.format("%-" + (number - 2) * 2 + "s  %s", " *", " *");
  15.         for (int i = 1; i <= number; i++) {
  16.             if (i == 1 || i == number) {
  17.                 System.out.print(endPattern);
  18.             } else {
  19.                 System.out.print(midPattern);
  20.             }
  21.             System.out.println();
  22.         }
  23.     }
  24. }
  25. ", " *");
  26. String midPattern = String.format("%-" + (number - 2) * 2 + "s %s", " *", " *");
  27. for (int i = 1; i <= number; i++) {
  28. if (i == 1 || i == number) {
  29. System.out.print(endPattern);
  30. } else {
  31. System.out.print(midPattern);
  32. }
  33. System.out.println();
  34. }
  35. }
  36. }

输出(输入为3)

  1. 请输入一个数字:3
  2. * * *
  3. * *
  4. * * *

输出(输入为7)

  1. 请输入一个数字:7
  2. * * * * * * *
  3. * *
  4. * *
  5. * *
  6. * *
  7. * *
  8. * * * * * * *
  1. <details>
  2. <summary>英文:</summary>
  3. **It can be done using a single For Loop with a Complexity of O(n)**
  4. public static void main(String[] args) {
  5. System.out.print(&quot;Please Enter a Number &quot;);
  6. Scanner scanner = new Scanner(System.in);
  7. int number = scanner.nextInt();
  8. if(number &gt;= 3) {
  9. String endPattern = new String(new char[number]).replace(&quot;
  10. <details>
  11. <summary>英文:</summary>
  12. **It can be done using a single For Loop with a Complexity of O(n)**
  13. public static void main(String[] args) {
  14. System.out.print(&quot;Please Enter a Number &quot;);
  15. Scanner scanner = new Scanner(System.in);
  16. int number = scanner.nextInt();
  17. if(number &gt;= 3) {
  18. String endPattern = new String(new char[number]).replace(&quot;\0&quot;, &quot; *&quot;);
  19. String midPattern = String.format(&quot;%-&quot;+(number-2)*2+&quot;s  %s&quot;, &quot; *&quot;,&quot; *&quot;);
  20. for(int i=1; i&lt;= number; i++) {
  21. if(i==1 || i==number) {				
  22. System.out.print(endPattern);
  23. }
  24. else {
  25. System.out.print(midPattern);
  26. }
  27. System.out.println();
  28. }
  29. }
  30. }
  31. **Output (for input 3)**
  32. Please Enter a Number 3
  33. * * *
  34. *   *
  35. * * *
  36. **output (for input 7)**
  37. Please Enter a Number 7
  38. * * * * * * *
  39. *           *
  40. *           *
  41. *           *
  42. *           *
  43. *           *
  44. * * * * * * *
  45. </details>
  46. # 答案3
  47. **得分**: 0
  48. 你需要在中间的for循环结束后再添加一个额外的星号。可以通过嵌套第二个空格的for循环,然后打印星号来实现。
  49. ```java
  50. for (int i = 0; i < side; i++) {
  51. System.out.print("*");
  52. for (int j = 0; j < side; j++) {
  53. System.out.print("  ");
  54. }
  55. System.out.println("*");
  56. }
  57. &quot;, &quot; *&quot;);
  58. String midPattern = String.format(&quot;%-&quot;+(number-2)*2+&quot;s %s&quot;, &quot; *&quot;,&quot; *&quot;);
  59. for(int i=1; i&lt;= number; i++) {
  60. if(i==1 || i==number) {
  61. System.out.print(endPattern);
  62. }
  63. else {
  64. System.out.print(midPattern);
  65. }
  66. System.out.println();
  67. }
  68. }
  69. }
  70. **Output (for input 3)**
  71. Please Enter a Number 3
  72. * * *
  73. * *
  74. * * *
  75. **output (for input 7)**
  76. Please Enter a Number 7
  77. * * * * * * *
  78. * *
  79. * *
  80. * *
  81. * *
  82. * *
  83. * * * * * * *
  84. </details>
  85. # 答案3
  86. **得分**: 0
  87. 你需要在中间的for循环结束后再添加一个额外的星号。可以通过嵌套第二个空格的for循环,然后打印星号来实现。
  88. ```java
  89. for (int i = 0; i < side; i++) {
  90. System.out.print("*");
  91. for (int j = 0; j < side; j++) {
  92. System.out.print(" ");
  93. }
  94. System.out.println("*");
  95. }
英文:

You need to add an extra star at the end of the middle for loop. This can be done by nested a second for loop of spaces followed by printing the star.

  1. for (int i = 0; i &lt; side; i++) {
  2. System.out.print(&quot;*&quot;);
  3. for (int j = 0; j &lt; side; j++) {
  4. System.out.print(&quot; &quot;);
  5. }
  6. System.out.println(&quot;*&quot;);
  7. }

huangapple
  • 本文由 发表于 2020年10月3日 02:33:05
  • 转载请务必保留本文链接:https://go.coder-hub.com/64176635.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定