如何使用两个for循环制作空心盒子

时间:2013-10-16 01:34:34

标签: java for-loop

使用嵌套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

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

7 个答案:

答案 0 :(得分:1)

您只需打印部分*,因此请在print("*")之前添加测试。一种选择是明确地测试四个条件(顶部,底部,左侧,右侧)和逻辑上的OR:

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

每个m==测试或c==测试都会识别一个方块。自四次测试 如果四个测试中的任何一个为真,则OR(在一起),if()为真(并打印*)。如果它们都不为真,则else运行并打印一个空格。

我还建议将m重命名为rowIndex,将c重命名为colIndex或其他内容。当您在一两周之后回到代码时,更具描述性的名称将使您更容易从上次停下的地方继续。 (问我怎么知道!)

答案 1 :(得分: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();
        }
    }
}

答案 2 :(得分: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("");
    }

答案 3 :(得分:0)

试试这个,有点硬代码。

工作示例here

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

答案 4 :(得分:0)

你可以试试这个

示例是Here

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

                }
            }
        }
    }

答案 5 :(得分: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();
        }
    }
}

答案 6 :(得分:0)

非常简单,使用两个while循环:  公共静态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;
    }
}