使用方法和循环绘制带有星星的矩形

时间:2014-10-12 22:57:42

标签: java loops methods ascii-art

我一直在尝试创建一个看起来像这样的矩形

*****
*   *
*****

或者

************
*          *
************

取决于我输入的数字,我似乎无法做到正确。这就是我到目前为止所拥有的

import java.util.Scanner;

public class DrawRectangle{
   public static void main (String [] args){


     Scanner keyboard = new Scanner(System.in);
     System.out.println("Enter an integer greater 1 for the length");
     int length = keyboard.nextInt();

     int rectangle = draw_rectangle(length);
     System.out.print(rectangle);   
 } 
public static int draw_rectangle(int m){
  for (int star = 2; star <= m; star++){
    System.out.print("*");
  }
  System.out.println("*\f   *\f\r\n");
  for(int star = 2; star <= m; star++){
  System.out.print("*");
 }
 return (m);
}
}

3 个答案:

答案 0 :(得分:0)

所以你只是想创建一个打印N长度矩形的方法。 首先,这个方法不需要返回一个int,它只能是void。在main方法的末尾,您正在打印 rectangle ,它与 length 的值相同。

import java.util.Scanner;

public class DrawRectangle{
    public static void main (String [] args){
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Enter an integer greater 1 for the length");
        int length = keyboard.nextInt();
        draw_rectangle(length);
        System.out.print(length); // This was rectangle but will print out whatever int the user entered   
    }
    public static void draw_rectangle(int m) {
        for(int star = 0; star < m; star++) System.out.print("*");
        System.out.print("\n*");
        for(int space = 0; space < m-2; space++) System.out.print(" ");
        System.out.print("*\n");
        for(int star = 0; star < m; star++) System.out.print("*");
        System.out.println();
    }
}

您将注意到矩形图形的变化。第一行是 m * s,下一行包含2个* m-2 空格。以下行就像第一行一样。请注意,从 0到m-1 的循环将迭代m次。您应该将此信息发送至Code Review以获取更多有用的提示。

答案 1 :(得分:0)

无法理解为什么你用2开始循环或中间打印试图做什么但是这是我怎么做的

for(int i=0;i<m;i++)
{
    for(int j=0;j<m;j++)
    {
    if(i==0 || i==m)
        System.out.print("*");
    else if(j==0 || j==m)
        System.out.print("*");
    else
        System.out.print(" ");
     }
System.out.print("\n");
}

答案 2 :(得分:0)

您可以创建一种打印矩形的方法和一种打印正方形的附加方法,作为前一种方法的特例,其中宽度高度 的两倍,以便正确显示。

输出:

******
*    *
******

************
*          *
************

代码:

public static void main(String[] args) {
    printSquare(3, ' ', '*');
    System.out.println();
    printRectangle(3, 12, ' ', '*');
}
public static void printSquare(int size, char fill, char border) {
    printRectangle(size, size * 2, fill, border);
}
public static void printRectangle(int height, int width, char fill, char border) {
    for (int i = 0; i < height; i++) {
        for (int j = 0; j < width; j++) {
            if (i == 0 || j == 0 || i == height - 1 || j == width - 1) {
                System.out.print(border);
            } else {
                System.out.print(fill);
            }
        }
        System.out.println();
    }
}

另见:Display squares of asterisks, filled and hollow, side by side