2017-09-27 10 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

でなければなりません。 – Barmar

+1

'moduleNMark'変数の書式指定子がありません。 – Barmar

+0

'%-10d'の後ろにあるはずです。現在' .lf'があります。 – Barmar

答えて

0

Javaは、以下の文字列形式を解析しています。

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

だからあなたのString.Formatのは、あなたが印刷されている9つの値が、フォーマット文字列でのみ6書式指定子を持つ

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); 
関連する問題