2015-10-21 3 views
1

В Python для печатиПечать звездочками использованием для петель в Java

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

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

Мы закодировать следующие:

for e in range (11,0,-1): 
    print((11-e) * ' ' + e * '*') 

print ('') 
for g in range (11,0,-1): 
    print(g * ' ' + (11-g) * '*') 

Мой вопрос, это может быть сделано в Java, а? Java не позволяет вам умножать число строк (int), например. 4 * " ", так как мы можем реализовать это в java?

+0

определить «это» .. – ergonaut

+0

@ergonaut Я хочу преобразовать вышеуказанный код в python, не используя внешние библиотеки или импорт –

+0

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

ответ

1

Это не будет кратким:

// top half.. 
    for (int i=11;i>0;i--){ 
     for (int a=0;a<11-i;a++){ 
      System.out.print(' '); 
     } 
     for (int b=0;b<i;b++){ 
      System.out.print('*'); 
     } 
     System.out.println(); 
    } 
+0

Спасибо! Как напечатать нижнюю половину? –

+0

Серьезно? Как говорит @ TigerhawkT3, это не служба перевода кода. Сказав это, вы сможете понять это. – ergonaut

+1

Возвращаясь к этому, я хотел бы сказать, что я сам это понял –

0

Чтобы запустить несколько строк в Java, вы можете использовать цикл for.

for(int i = 0; i < yournum; i++){ 
    System.out.print(" "); 
} 

yournum является количество пробелов вы хотите

-2

Вы можете добавить сообщение, которое вы хотите напечатать на строку, а затем распечатать строковое значение на System.out.println(message);

0

Здесь представлено решение Core Java, которое может генерировать весь вывод, используя одиночный цикл for:

String before = "", after = ""; 

for (int i=0; i < 6; ++i) { 
    String starRepeat = String.format("%0" + (6-i) + "d", 0).replace("0", "*"); 
    String spaceRepeat = (i>0) ? String.format("%0" + i + "d", 0).replace("0", " ") : ""; 
    String line = spaceRepeat + starRepeat; 

    if (i == 0) { 
     before = line; 
     after = line; 
    } 
    else { 
     before = before + "\n" + line; 
     after = line + "\n" + after; 
    } 
} 

System.out.println(before + "\n\n" + after); 

Выход:

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

    * 
    ** 
    *** 
    **** 
***** 
****** 
+0

Спасибо, это было полезно! –

1
public class Loops { 

    public static void main(String[] args) { 
     //print first half 
     for(int i = 0; i < 6; i++) { 
      printChar(' ', i); 
      printChar('*', 6-i); 
      System.out.println(); 
     }   

     //print second half 
     for(int i = 0; i <= 6; i++) { 
     printChar(' ', 6-i); 
     printChar('*', i); 
     System.out.println(); 
     } 
     System.out.println(); 
    } 

    //helper function to print a char n specific times 
    private static void printChar(char ch, int n) { 
     for(int i = 0; i < n; i++) { 
      System.out.print(ch); 
     } 
    } 

} 
+0

'printchar' - это не вещь! –

+0

Это если вы определяете его как функцию. – intboolstring

+0

определяется как функция –

0
IntStream.range(0, 6).forEach(i -> { 
     IntStream.range(0, i) 
       .forEach(t -> System.out.print(" ")); 
     IntStream.range(0, 6 - i) 
       .forEach(t -> System.out.print("*")); 
     System.out.println(); 
    }); 

В Java8 вы можете использовать Stream сделать samething. Используйте IntStream для range и println

0

Если вы открыты к использованию: Commons Lang StringUtils ... использованием Commons Lang StringUtils.repeat() может помочь вам повторить строку ... в качестве примера:

StringUtils.repeat("*", 3) //produces *** 
+0

Спасибо за ваш ответ –

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