2

現在、三角形の高さの int パラメーターを使用して三角形を作成するメソッドを呼び出して、パスカルの三角形をさまざまな高さで出力するプログラムを作成しようとしています。私のプログラムを実行しようとすると、最初の Pascal の三角形が bu を出力し、次に例外エラーが発生し、次のように表示されます。

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0
at java.util.Formatter$FormatSpecifier.failMismatch(Unknown Source)
at java.util.Formatter$FormatSpecifier.checkBadFlags(Unknown Source)
at java.util.Formatter$FormatSpecifier.checkGeneral(Unknown Source)
at java.util.Formatter$FormatSpecifier.<init>(Unknown Source)
at java.util.Formatter.parse(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at PascalsTriangle.drawTriangle(PascalsTriangle.java:19)
at PascalsTriangle.main(PascalsTriangle.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

デバッグ中に、19 行目の文字列出力のフォーマット方法に問題があることに気付きました。私は Java プログラミングにかなり慣れていないため、コード内のさまざまなフォーマットの問題に対処しようとしましたが、どうすればよいか分からず困っています。これを機能させます。この例外エラーの発生を防ぐ方法について何か提案はありますか?

これが私のプログラムのコードです:

public class PascalsTriangle {

  private int height;

  public void drawTriangle(int height) {
    System.out.println("A Pascal Triangle with height " + height);
    for(int i = 0; i <= height; i++) {
      int number = 1;
      System.out.format("%" + ((height-i) * 2) + "s", " ");

      for(int j = 0; j <= i; j++) {
        System.out.format("%5d", number);
        number = number * (i - j) / (j + 1);

      }
    System.out.println();   
    }
  }



  public static void main(String[] args) {

    PascalsTriangle pascal = new PascalsTriangle();

    pascal.drawTriangle(4);
    pascal.drawTriangle(10);
    pascal.drawTriangle(7);
    pascal.drawTriangle(2);
  }
}
4

3 に答える 3

0

それがあなたの質問への答えではない場合でも、ヒント: String.format で %% を使用してください。私の間違いは、シンボルだけに %% を 1 つだけ使用していました。

于 2019-11-14T22:17:59.633 に答える