2013-10-11 2 views
0

Я хотел бы, чтобы моя программа была в форме треугольника с пространством между ними, как на фотографии ниже. Heres мой код до сих пор.Отобразить форму треугольника, используя звездочку, используя метод подстроки

import java.util.Scanner; 
public class Triangle { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     String space= "   "; 
     space.replaceAll("", " "); 
     int i = input.nextInt(); 
     while (i > 0) { 
      for (int j = 0; j <1; j++) 
       System.out.print("*"+space.substring(0,0)+"*"); 
      System.out.println(); 
      i--; 
     } 
    } 

, когда я запускаю этот код на выходе это

** 

** 


** 

** 

** 

** 

** 

** 

** 

Я хотел бы выход выглядеть следующим образом:

enter image description here

+0

Вам нужен первый или второй выход? –

+0

второй вывод – mrorgon

ответ

0

Прежде всего ваш внутренний цикл Безразлично «Я не буду служить никому. Он работает только один раз. Логика была бы такой же, даже если вы ее удалите.

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

Во-вторых, я чувствую, что вы хотели сделать что-то вроде этого:

System.out.print("*"+space.substring(i)+"*"); 

Убедитесь, что ваша строка является достаточно большим, чем индекс я

String space= "          "; 
+0

@G V Итак, следует ли удалить строку кода или добавить к ней больше? – mrorgon

+0

Удалите цикл for. Измените подстроку, как упомянуто –

+0

, теперь мой вывод больше не является формой треугольника. – mrorgon

0
Scanner input = new Scanner(System.in); 
    int i=input.nextInt(); 
    for (int j=0; j<(i-1); j++) 
     System.out.print(" "); 
    System.out.println("*"); 
    for (int j=1; j<(i-1); j++) 
    { 
     for (int k=0;k<(i-1-j); k++) 
      System.out.print(" "); 
     System.out.print("*"); 
     for (int k=0;k<(j*2)-1; k++) 
      System.out.print(" "); 
     System.out.println("*"); 
    } 
    for (int j=0; j<(i*2-1); j++) 
     System.out.print("*"); 
    System.out.println(""); 
0

Используя что-то вроде String.format("%3s, "*") вы можете определить ширину (здесь: 3) и, следовательно, белое пространство вывода. Если вы добавите какой-нибудь умный код для определения ширины для каждой строки, вы можете сэкономить много головных болей.

Кроме того, важно знать, что только шрифт с фиксированным расстоянием между буквами будет делать трюк (например, Currier New).

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