2017-09-27 2 views
-1
//FormattingOutput.java 
/*This program shows how integer, String and floating-point variables can be formatted*/ 

public class FormattingOutput{ 
    public static void main(String args[]){ 

      String module1Name = "Mathmatics", 
        module2Name = "Structured to Programming", 
            module3Name = "Web Design"; 
             
        int module1Students = 64, module2Students = 84, module3Students = 62; 
         
        float module1Mark = 72.031f, module2Mark = 61.845f, 
       module3Mark = 72.774f; 
         
        String formatString = String.format("%-35s%-10d.lf\n%-35s%-10d.lf\n%-35%-10d.lf", 
        module1Name,module1Students,module1Mark,module2Name,module2Students,module2Mark, 
        module3Name,module3Students,module3Mark); 
         
        System.out.println("Module Name    #Students  Average Mark\n" +formatString);         
    } 
} 

메시지 :스레드 "주요"java.util.IllegalFormat의 예외

--------------------Configuration: <Default>-------------------- 
Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String 

I했습니다 내가, 내 코드를 빌드 할 때 착각 문제는 그 이후 없었다 무엇을 어떤 아이디어, 나는 복종했다. 그러나 그 메시지는 를 보여줬다 당신은 나를 도와 줄 수 있었느냐?

+0

당신은 9 개 값이 인쇄되고있는 일,해야하지만 형식 문자열 만 6 형식 지정자. – Barmar

+1

'moduleNMark' 변수의 형식 지정자가 없습니다. – Barmar

+0

그들은'% ld'을 가지고있는'% -10d' 뒤에 있어야합니다. – Barmar

답변

0

Java는 아래의 문자열 형식을 구문 분석합니다.

final String formatSpecifier = "%(\\d+\\$)?([-#+ 0,(\\<]*)?(\\d+)?(\\.\\d+)?([tT])?([a-zA-Z%])"; 

그래서 및 String.format는

String formatString = String.format("%-35s%-10d.%1f\n%-35s%-10d.%1f\n%-35s%-10d.%1f", module1Name, module1Students, 
        module1Mark, module2Name, module2Students, module2Mark, module3Name,module3Students,module3Mark); 
System.out.println("Module Name #Students Average Mark\n" + formatString);