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

の一部のみを印刷する必要がある*ため、 の前にテストを追加しprint("*")ます。1 つのオプションは、4 つの条件 (上、下、左、右) を明示的にテストし、それらを論理的に OR することです。

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

m==テストまたはc==テストは、正方形の 1 つのピースを識別します。4 つのテストは一緒に ORed されるため、4 つのテストのいずれかが true の場合、if() は true (および * が出力されます) になります。それらのいずれも真でない場合、 はelseスペースを実行して出力します。

mまた、名前を to rowIndexand cto colIndexor somethingに変更することをお勧めします。1 ~ 2 週間後にコードに戻ったときに、わかりやすい名前を付けると、中断したところから簡単に再開できます。(どうやって知っているのか聞いてください!)

于 2013-10-16T01:45:51.963 に答える
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
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 に答える