1

使用嵌套的 for 循环语句来绘制由“*”组成的空盒子。这些框具有相同的行数和列数,并且该数字应由用户输入(有效范围:5 到 21)。我很难想出一种使盒子空心的方法。这就是我的代码,它是一个完整的正方形,但我需要它是空心的或只是边框。

System.out.println("How many rows/columns(5-21)?");
    rows=input.nextInt();
    while(rows<5||rows>21){
      System.out.println("Out of range. Reenter: ");
      rows=input.nextInt();
    }
    for(m=1;m<=rows;m++){
      for(c=1;c<=rows;c++){
        System.out.print("*");
      }
      System.out.println();
    }

输出应如下所示:多少行/列(5-21)?25 超出范围。重新进入:7

******* 
*     * 
*     * 
*     * 
*     * 
*     *  
*******
4

7 回答 7

1

您只需要打印一些*s,因此在print("*"). 一种选择是显式测试四个条件(顶部、底部、左侧、右侧)并将它们逻辑地 OR 在一起:

if( (m==1) ||     //top
    (m==rows) ||  //bottom
    (c==1) ||     //left
    (c==rows)     //right
) {
        System.out.print("*");
} else {
        System.out.print(" ");
}

每个m==测试或c==测试都识别出一块正方形。由于四个测试是 ORed 在一起的,如果四个测试中的任何一个为真,则 if() 为真(并打印 *)。如果它们都不为真,则else运行并打印一个空格。

我还建议重命名mtorowIndexctocolIndex或其他东西。当您在一两周后回到代码时,更具描述性的名称将使您更容易从中断的地方继续。(问我怎么知道的!)

于 2013-10-16T01:45:51.963 回答
0

你可以试试这个

示例在这里

    String pattern;

    int noOfTimes;

    Scanner scanner = new Scanner(System.in);

    System.out.print("Enter the pattern to print : ");
    pattern = scanner.nextLine();

    System.out.print("Enter number of times it should get printed : ");
    noOfTimes = scanner.nextInt();

    for(int i=1; i<=noOfTimes; i++) {      

        System.out.println();

        if(i==1 || i==noOfTimes) {

            for(int j=1; j<=noOfTimes; j++){

                System.out.print(pattern+" ");

            }
        }
        else {

            for(int k=1; k<=noOfTimes;k++) {

                if(k==1 || k == noOfTimes) {

                    System.out.print(pattern + " ");

                }                   
                else {

                    System.out.print("  ");

                }
            }
        }
    }
于 2014-12-01T07:16:51.640 回答
0
import java.util.Scanner;

public class icibos {

    public static void main(String[] args) {

        Scanner gir = new Scanner(System.in);
        System.out.print("Karenin kenarını girin: ");
        int kenar = gir.nextInt();

        for (int i = 1; i <= kenar; i++) {
            for (int j = 1; j <= kenar; j++) {
                if (i == 1 || i == kenar || j == 1 || j == kenar)
                    System.out.print("*");
                else
                    System.out.print(" ");
            }
            System.out.println();
        }
    }
}
于 2014-10-20T11:16:28.490 回答
0
  for (int i=1;i<=lgh;i++){
        for (int a=1;a<=lgh;a++){
            if(i>1 && i<lgh && a>1 && a<lgh)
                System.out.print(" ");
            else
                System.out.print("*");
        }
        System.out.println("");
    }
于 2014-12-01T06:34:44.927 回答
0

试试这个,它有点硬代码。

这里的工作示例

    String myStars="*******";
    String oneStar="*";
    int count=0;

    System.out.println(myStars);
    count++;
    while(count<=7)
    {
        System.out.println(oneStar+"     "+oneStar);
        count++;
    }
    System.out.print(myStars);
于 2014-12-01T07:04:43.183 回答
0
import java.util.Scanner;
public class holsqr{
    public static void main(String args[]){
        Scanner ma=new Scanner(System.in);
        System.out.print("Enter the number:");
        int max=ma.nextInt();
        for(int i=1;i<=max;i++){
            for(int j=1;j<=max;j++){
                if((i==1)||(i==max)){
                    System.out.print("#");
                }else{
                    if(j==1||j==max){
                        System.out.print("#");
                    }
                    else{
                        System.out.print(" ");
                    }           
                }
            }
            System.out.println();
        }
    }
}
于 2016-08-06T17:45:09.180 回答
0

很简单,使用两个 while 循环: public static void main(String[] args) {

    int size = 0;
    int r = 0;
    String star = "*";
    String space = " ";
    System.out.print("Input size of side of square: ");
    Scanner input = new Scanner(System.in);
    size = input.nextInt();

    while (r < size) {
        int c = 0;
        while (c < size) {
            System.out.print(r > 0 && r < size - 1 && c > 0 && c < size - 1 ? space : star);
            ++c;
        }
           System.out.println();
        ++r;
    }
}
于 2019-04-10T15:08:16.103 回答