2015-02-15 2 views
1

Я пытаюсь создать программу, которая запрашивает у пользователя размеры и длину квадрата/прямоугольника, а затем рисует его с помощью символа #. Я почти получил его, за исключением того, что я не могу совсем, кажется, чтобы получить правильную сторону прямоугольника, чтобы распечатать прямо ... Вот мой код:Рисунок прямоугольника прямоугольника прямоугольника/прямоугольника от пользователя ввода в Java

import java.util.Scanner; 
public class warmup3 
{ 
    public static void main(String[] args) 
    { 
    int width; 
    int length; 

    Scanner sc= new Scanner(System.in); 

    System.out.println("How big should the width of the square be?"); 
    width = sc.nextInt(); 

    System.out.println("How big should the length of the square be?"); 
    length= sc.nextInt(); 

    { 
    for (int y= 0; y < length; y++) 
    { 
     for (int x= 0; x < width; x++) 
     { 
     if (x == 0 || y == 0) 
     { 
      System.out.print("#"); 
     } 
     else if (x != width && y == length-1) 
     { 
      System.out.print("#"); 
     } 
     else if (y != length && x == width-1) 
     { 
      System.out.print("#"); 
     } 
     else 
     { 
      System.out.print(""); 
     } 
     } 
    System.out.println(""); 
    } 
    } 
    } 
} 

Я знаю, что проблема со вторым еще -if, но я не могу это исправить ...

Я не могу загрузить изображение того, что печатает этот код, но в основном это почти полный прямоугольник, но с двумя рядами # с на левой стороне и ни один с правой стороны (правая сторона открыта) (вы должны быть в состоянии убедиться сами).

ответ

2

Проблема на самом деле с заявлением else. Вместо того, чтобы печатать «ничего» или "", вам нужно распечатать пробел " ". Таким образом изменить заявление еще до:

else 
    { 
     System.out.print(" "); 
    } 

Таким образом, когда цикл в настоящее время не в какой-либо из краев она распечатает пространство, позволяя последним else if быть в нужном месте при печати из последнего #

+0

вау-й на было просто, спасибо !! – compstudent

+0

@compstudent рад, что это сработало :) – chancea

0

Итерация в 2 одномерный массив с логической проверки:

public static void rectOuter(int length, int width) { 

    String printStr = "*"; 
    String seprator = " "; 

    for (int i = 0; i < length; i++) { 

     for (int j = 0; j < width; j++) 

      if (i == 0 || j == 0 || i == length - 1 || j == width - 1) 
       System.out.print(printStr + seprator); 
      else 
       System.out.print(seprator + seprator); 

     System.out.println(); 
    } 
} 

PS: System.out.print быть заменен StringBuilder

Смежные вопросы