2017-01-03 3 views
-3

どうすればこのコードを実行できますか?Xsの間にギャップがある出力はありますか?私は5入力した場合どうすればこのコードを行うことができますが、出力はXの間にギャップがありますか?

import java.util.Scanner; 

    public class BlockMaker { 
     public static void main(String[] args) { 
      Scanner keyboard = new Scanner(System.in); 
      System.out.println("Enter a number."); 
      int num = keyboard.nextInt(); 
      for(int x = 0; x < num; x++){ 
      for(int y = 0; y < num; y++){ 
       System.out.print("X"); 
     } 
      System.out.println(); 
      }keyboard.close(); 

     } 
    } 

出力は、:

Enter a number. 
5 
XXXXX 
XXXXX 
XXXXX 
XXXXX 
XXXXX 

をだから私の所望の出力は次のようになります。

Enter a number. 
5 
XXXXX 
X X 
X X 
X X 
XXXXX 

おかげ

答えて

0

あなたがしているかどうかをチェックするために条件を追加します。 Xを印刷します。それ以外の場合は空白です。

if (x == 0 || x == num - 1 || y == 0 || y == num - 1) { 
    System.out.print("X"); 
} else { 
    System.out.print(" "); 
} 
+0

私は、完全な行を印刷してから、ループを2回繰り返すことでより洗練されたものになると主張します。しかし、シンプルでわかりやすい解決策。 – byxor

+0

@BrandonIbbotson私はあまりにも思ったが、すぐに私の心を変えた。 – shmosel

0

これが機能するかどうかを確認してください。

import java.util.Scanner; 

public class BlockMaker { 
    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Enter a number."); 
     int num = keyboard.nextInt(); 
     for(int x = 0; x < num; x++){ 
     for(int y = 0; y < num; y++){ 
      if(x == 0 || x == (num - 1)){ // If we are the top or bottom row 
       System.out.print("X"); 
      }else if(y == 0 || y == (num - 1)){ // If we are the first or last column 
       System.out.print("X"); 
      else{ // Everything else print a space 
       System.out.print(" "); 
      } 
    } 
     System.out.println(); 
     }keyboard.close(); 

    } 
} 
関連する問題