2014-09-23 3 views
-2

я должен нарисовать периметр прямоугольника, используя спецификации, введенные гаются, что он должен выглядеть следующим образомОбращая периметр прямоугольника с белым пространством в середине

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

шахты имеет все центр full-how, как получить центр в качестве пробела?

это мой код до сих пор

ИСХОДНЫЙ КОД пакет lab5; импорт java.util.Scanner;

public class Lab5 { 
public static void main(String[] args) { 
    Scanner inputReader = new Scanner(System.in); 

    int i, j, width, height; 
    String x; 

    System.out.print("Enter a character: "); 
    x = inputReader.nextLine(); 
    System.out.print("Enter a height: "); 
    height = inputReader.nextInt(); 
    System.out.print("Enter a width: "); 
    width = inputReader.nextInt(); 

    for(i = 1; i <=height; i++) { 
     for(j = 1; j <= width; j++) { 
      System.out.print(x); 
     } 
     System.out.println(); 
    } 
} 
} 
+0

Можете ли вы описать словами, как вам нужно распечатать каждую строку? –

+0

Мне нужно, чтобы это было 3 ширины * 3, но просто для того, чтобы распечатать периметр, а не центр. – KangarooRIOT

+0

Возможно, я должен повторить свое предложение: Опишите в словах, какие символы вы должны распечатать в одной строке прямоугольника. Часто, используя английский или ваш родной язык, описывать проблему поможет вам понять, как решить проблему. –

ответ

2

уплотнению, если/другое заявление в ваш цикл. Печатает символ, если верхняя граница, нижняя граница, левый столбец или правый столбец.

for(i = 1; i <=height; i++) { 
    for(j = 1; j <= width; j++) { 
     if(i == 1 || i == height || j == 1 || j == width) 
      System.out.print(x); 
     else 
      System.out.print(" "); 
    } 
    System.out.println(); 
} 
+0

Отлично! Спасибо! – KangarooRIOT

1

uh ... печать пробел.

System.out.print(x); 
for(j = 2; j <= width-1; j++) { 
    System.out.print(" "); 
} 
System.out.print(x); 
+0

У меня есть, что в моем коде, как вы можете видеть, моя проблема в том, как я могу это сделать, чтобы он печатал только контур формы (периметр), а не полный центр? – KangarooRIOT

+0

@ user3681591 у вас есть что в вашем коде? 'System.out.print (" ");'? Я этого не вижу. –

+0

Хорошо, я прошу прощения, мой вопрос, как я могу контролировать, сколько пробелов печатается и где я его размещаю? – KangarooRIOT

0

Вы можете печатать пробелы, используя System.out.print (""), когда i и j не находятся на границах.

import java.util.Scanner; 

public class PrintBox { 
    public static void main(String[] args) { 
     Scanner inputReader = new Scanner(System.in); 

     int i, j, width, height; 
     String x; 

     System.out.print("Enter a character: "); 
     x = inputReader.nextLine(); 
     System.out.print("Enter a height: "); 
     height = inputReader.nextInt(); 
     System.out.print("Enter a width: "); 
     width = inputReader.nextInt(); 

     for(i = 1; i <= height; i++) { 
      for(j = 1; j <= width; j++) { 
       if (i == 1 || i == height || j == 1 || j == width) 
        System.out.print(x); 
       else 
        System.out.print(" "); 
      } 
      System.out.println(); 
     } 
    } 
} 
0
for(int i=0;i<width;i++){ 
    System.out.println(x); 
} 
for(int i=0;i<height;i++){ 
    System.out.println(x); 
    for(int j=0;j<width-2;j++){ 
     System.out.println(" "); 
    } 
    System.out.println(x); 
} 
for(int i=0;i<width;i++){ 
    System.out.println(x); 
} 
+0

Это делает для меня инфинантный цикл:/ – KangarooRIOT

+0

Упс, исправил его – Michael

1

Другое решение не будет работать, как мы не можем сделать, чтобы

height = inputReader.nextInt(); 
width = inputReader.nextInt(); 

он не будет принимать правильный вход для ширины.

Правильная реализация: (Обратите внимание на код испытывается и выполнил)

public static void main(String[] args) { 
    Scanner inputReader = new Scanner(System.in); 
    int i, j, width, height; 
    String x; 
    System.out.print("Enter a character: "); 
    x = inputReader.nextLine(); 
    System.out.print("Enter a height: "); 
    height = Integer.parseInt(inputReader.nextLine()); 
    System.out.print("Enter a width: "); 
    width = Integer.parseInt(inputReader.nextLine()); 

    for(i = 0; i <= height; i++) { 
     System.out.print(x); 
     for(j = 1; j <= width-1; j++) { 
      if(i==0 || i==height) { 
       System.out.print(x); 
       continue; 
      } 
      System.out.print(" "); 
     } 
     System.out.print(x); 
     System.out.println(); 
    } 
} 
Смежные вопросы