2017-10-26 13 views
0

文字配列内のすべての要素を出力しようとしています。java.util.IllegalFormatConversionException printfで配列を印刷しようとしたとき

なぜIllegalFormatConversionExceptionが届いていますか?

public class printf_function_test {  
    public static void main(String[] args) { 
     int any = 5; 
     String object = "car"; 
     char[] ch = {'3','5','6','9'}; 
     System.out.println(ch); 
     System.out.printf(
      "%d anything can happen anytime ,bought a %s and write" 
      + "this number now %c", 
      any, 
      object, 
      ch 
     );       
    } 
} 
+1

[Java配列を印刷する最も簡単な方法は何ですか?](https://stackoverflow.com/questions/409784/whats-the-simplest-way-to-print-a-java-array) – Dukeling

+0

@Dukeling OPの主な問題は、 'String'表現ではなく、' char'対 'char'の' String' **形式**表現であるため、重複しているとは思わない配列(あなたが指摘している質問は確かに関係しますが)。 – Mena

+0

@メナ文字列の書式設定の問題は、将来の訪問者には役に立たないと考えられます(無効な入力の組み合わせが多いと例外が発生する可能性があるため、この特定の組み合わせはドキュメントに基づいて非論理的です)例外的に参考になるかもしれません)、私は配列の印刷に悩まされます。 – Dukeling

答えて

2

あなたは、単一のchar形式%cとしてchar[]を渡しています。

Javaの配列はオブジェクトであり、String表現(したがって%s)でフォーマットする必要があります。あなたのケースでは

、配列のデフォルト String表現は、あなたが望むものである可能性が低いことから、あなたは %sの組み合わせを使用して、それ Arrays.toString(ch)または String.valueOf(ch)(感謝 Axel)を渡すことができます。

+1

または 'String.valueOf(ch)'(編集:あなたは大歓迎!) – AxelH

関連する問題