2012-02-08 1 views
1

У меня возникли трудности с завершением этой программы. Я пытаюсь создать программу, которая создает звездочки, но затем превращает ее в треугольник.Новичок в Java - Контрольный вывод - Генерирование Asterix

Это то, что у меня уже есть.

public class 12345 { 
    public static void main(String[] args) { 
     int n = 0; 
     int spaces = n; 
     int ast; 

     System.out.println("Please enter a number from 1 - 50 and I will draw a triangle with these *"); 

     Scanner keyboard = new Scanner(System.in); 
     n = keyboard.nextInt(); 

     for (int i = 0; i < n; i++) { 
      ast = 2 * i + 1; 

      for (int j = 1; j <= spaces + ast; j++) { 
       if (j <= spaces) 
        System.out.print(' '); 
       else 
        System.out.print('*'); 
      } 

      System.out.println(); 
      spaces--; 
     } 
    } 
} 

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

Спасибо вы заранее!

+1

название класса, начинающееся с номера разрешено ????? – Shekhar

+0

Неужели вы хотите сделать такую ​​структуру, как ромб? – vikiiii

+0

начните с создания «Прямоугольного треугольника». – Azodious

ответ

1

Try перемещение

int spaces = n; 

к ПОСЛЕ значение n считывается из стандартного ввода.

Это решает половину проблемы и, надеюсь, поможет вам на правильном пути.

+0

Это решит только половину алмаза (верхний треугольник будет напечатан) – Kris

+0

Да, но поскольку это, вероятно, домашнее задание, я просто хотел подтолкнуть его в правильном направлении. Но вы правы; Я уточню свой ответ, чтобы более подробно рассказать об этом. –

+0

Он уже распечатывает половину треугольника. Я просто пытаюсь научить себя, как сделать это там, где он создает весь треугольник. – LOVEHOPE

0

Я добавил несколько вещей к вашему коду и получил его, чтобы напечатать полный треугольник, где число, вводимое в сканер, будет числом звездочек, напечатанным в нижней строке. То есть если входной сигнал равен 3, треугольник будет двумя рядами 1-> 3; если входной сигнал равен 5, то треугольник будет 3 строки 1-> 3-> 5 и т. д.

public static void main(String[] args) { 
     int ast; 
     int reverse = 1; 

     System.out.println("Please enter a number from 1 - 50 and I will draw a triangle with these *"); 

     Scanner keyboard = new Scanner(System.in); 
     int spaces = keyboard.nextInt(); 


     for (int i = 0; i < spaces; i++) { 
      ast = 2 * i + 1; 

      for (int j = 1; j <= spaces + ast; j++) { 
       if (j <= spaces) { 
        System.out.print(' '); 
       } else { 
        System.out.print('*');} 
       if (j > spaces + ast) { 
        for (int k = 0; k < spaces-(reverse-1); k++) { 
         System.out.print(' '); 
        } 
       } 
       int k = 0; 
       reverse++; 

      } 

      System.out.println(); 
      spaces--; 
     } 
    } 
} 

Я добавил еще один оператор if после вашего if-else, который запускает, когда переменная j превышает первое условие цикла. Это вызывает еще один цикл, который делает выходные линии симметричными, по существу повторяя ваш первый оператор if.

Я надеюсь, что это поможет =)

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

  • Нет связанных вопросов^_^