2016-02-10 2 views
1

Я пытаюсь напечатать следующий вывод на экране.Синтаксис Java String.format()

 # 
    ## 
    ### 
    #### 
##### 
###### 

Это мой код,

public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 
     int num = Integer.parseInt(sc.nextLine()); 

     for(int i= 1; i <= num; i++){ 
      String spc = String.format("%" + (num - i) + "s", " "); 
      String hash = String.format("%" + i + "#", "#"); 
      System.out.println(spc+hash); 
     } 
    } 

Я получаю следующее сообщение об ошибке,

Exception in thread "main" java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = # 
    at java.util.Formatter$FormatSpecifier.failMismatch(Formatter.java:4298) 
    at java.util.Formatter$FormatSpecifier.printString(Formatter.java:2882) 
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2763) 
    at java.util.Formatter.format(Formatter.java:2520) 
    at java.util.Formatter.format(Formatter.java:2455) 
    at java.lang.String.format(String.java:2940) 
    at Solution.main(Solution.java:13) 

Я понимаю, мой string.Format не был сделан правильно, но документы путают при печати символа # Любая помощь оценена.

ответ

2

Вы можете попробовать так:

for (int i = 1; i <= num; i++) { 
    String spc = (i == num) ? "" : String.format("%" + (num - i) + "s", " "); 
    String hash = String.format("%" + i + "s", "#").replace(' ', '#'); 
    System.out.println(spc + hash); 
} 

Выход:

 # 
    ## 
    ### 
    #### 
##### 
###### 
+0

Я запутался с документацией, вы можете немного объяснить свой ответ и что означает '%' и 's'. – Zeus

+0

''% '' является специальным символом для форматирования. '' s'' для ** String ** – mmuzahid

2

Я предполагаю, что вы хотели написать:

 String hash = String.format("%" + i + "s", "#"); 

Чтения сообщение об ошибке помогла мне найти эту ошибку, если вы не отметили, где линия 13 является.

+0

Эта печать, Num-1 пространства с завершающим # 6 раз. – Zeus

+0

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

0

Попробуйте

for(int i= 1; i <= num; i++) 
     { 
      if((num-i)>0) 
      { 
       String spc = String.format("%" + (num - i) + "S", " "); 
       String hash = String.format("%" + i + "s", "#"); 
       System.out.println(spc+hash); 
      } 
     } 
+0

Я думаю, что он производит неправильный выход. – mmuzahid

+0

ya ... он просто удаляет исключения и ошибки только ... –

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