2016-09-23 1 views
-1

Я пытаюсь напечатать фигуру, которая печатает 3 пробела, затем звезду, затем следующая строка печатает 2 пробела, и звездочку, а затем 1 пробел, // и звезду и так далее. У меня есть код для печати всех слэшей и звезд, но я не могу понять, как получить пробелы для печати с нисходящим числом. Это для назначения, и я должен использовать вложенные для циклов. Есть предположения? PS Мне не нужен точный ответ (т. Е. «Введите этот код»), я просто хочу, чтобы предложение попыталось указать мне в правильном направлении.Как напечатать нисходящее/возрастающее количество пробелов в Java?

То, что я до сих пор (H является шкала):

public class Pattern { //program that prints a boxed-in design 
    public static final int H = 9; 
    public static void main(String[] args) { 
    line(); 
    design(); 
    } 
    public static void line() { 
    System.out.print("+"); 
    for (int d=1; d <=H-2; d++) { 
     System.out.print("-"); 
    } 
    System.out.println("+"); 
    } 
    public static void design() { 
    top(); 
    } 
    public static void top() { 
    for (int row = 1; row <=H-2; row++){ 
     System.out.print("|"); 
     for (int sp =3; sp>=1; sp--){ 
     System.out.print(" "); 
     } 
     for (int fsl=1; fsl<=row-1; fsl++){ 
     System.out.print("/"); 
     } 
     for (int star=1; star<=1; star++){ 
     System.out.print("*"); 
     } 
     for (int bsl=1; bsl<=row-1; bsl++){ 
     System.out.print("\\"); 
     } 
     System.out.print("|"); 
     System.out.println(); 
    } 
    } 
} 
+3

Что вы пробовали? Когда вы спрашиваете о проблемах с домашними заданиями, вы должны показать, что вы сделали до сих пор. Пожалуйста, прочитайте [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) – Orin

+1

Я бы предложил использовать два цикла. Первый/внешний цикл от 'n' до' 0'. И внутренний цикл от '0' до' n'. Используйте 'System.out.print' для печати во внутреннем цикле без создания новой строки. Удачи. – CollinD

+0

Вставьте код здесь как обычный текст при правильном форматировании. – progyammer

ответ

0

Так что, если я правильно понимаю, ваша row переменная идет от 1 до 4, и вы хотите, 3 места в строке 1, 2 пространства в строке 2, 1 в строке 3 и 0 в строке 4? Я предлагаю вам найти арифметическое выражение (например, вы уже нашли row-1 для количества косых черт), чтобы дать вам правильное количество пробелов в каждой строке/строке. Если мне нужно больше сказать, не стесняйтесь добавить комментарий к этому ответу.

+0

Это было действительно полезно, и я в итоге использовал выражение «(-1) * row + 4» Что работает, когда масштаб равен 9, теперь мне просто нужно выяснить, какое выражение использовать при изменении масштаба –

+0

Рад, что это помогло ! Вы можете сделать немного проще с '4 - row'. Для изменения масштаба ('H'), я считаю, что вам нужно что-то вставить вместо 4, которое зависит от' H'. Счастливое кодирование. PS Вы можете пометить ответ правильно, щелкнув по серой отметке слева от него, если и когда вы думаете. –

0
package com.acme; 

import java.util.stream.IntStream; 
import java.util.stream.Stream; 

import static java.util.Comparator.reverseOrder; 

public class PrintIt { 

    public static void main(String[] args) { 
     printSpacesWithStar(10, Order.ASC); 
     printSpacesWithStar(10, Order.DESC); 
    } 

    private static void printSpacesWithStar(int numbers, Order order) { 
     Stream<Integer> streamOfInt = IntStream.rangeClosed(1, numbers) 
       .boxed(); 

     switch (order) { 
      case ASC: 
       streamOfInt 
         .sorted(reverseOrder()) 
         .forEach(Test::printingLogic); 
       break; 
      case DESC: 
       streamOfInt 
         .forEach(Test::printingLogic); 
       break; 
     } 
    } 

    private static void printingLogic(Integer currentValue) { 
     for (int k = 1; k < currentValue; k++) { 
      System.out.print(" "); 
     } 
     System.out.println("*"); 
    } 

    enum Order { 
     ASC, DESC; 
    } 


} 
+0

Код в порядке. Однако ОП специально сказал: «Мне не нужен точный ответ (т. Е.« Введите этот код »)». –