Java UnknownFormatConversionException

00jrzges  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(87)

下面的代码抛出了这个错误,我不知道为什么。很明显,将String.format输出到str变量有问题,但我不知道它出了什么问题。

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'i'
    at java.util.Formatter$FormatSpecifier.conversion(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.util.Formatter.format(Unknown Source)
    at java.lang.String.format(Unknown Source)
    at Donor.toString(Donor.java:41)
    at Donor.main(Donor.java:65)
import java.util.Scanner;

public class Donor {

    public String name;
    public int age;
    public double donation;

    Donor() {

        //Initialized to these values for debugging
        name = "NoName";
        age = 0;
        donation = 0;

    }

    Donor(String nameinit, int ageinit, double donationinit) {

        name = nameinit;
        age = ageinit;
        donation = donationinit;

    }

    public String toString() {

        String str = "";

        str = String.format("%s-30%i-6$%d-20", name, age, donation);

        return str;

    }

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        String nameinit = null;
        int ageinit = -1;
        double donationinit = -1;
        String outp = null;

        System.out.print("Enter the donor's name: ");
        nameinit = input.nextLine();

        System.out.print("Enter the donor's age: ");
        ageinit = input.nextInt();

        System.out.print("Enter the donation amount: ");
        donationinit = input.nextDouble();

        Donor d = new Donor(nameinit, ageinit, donationinit);
        outp = d.toString();

        System.out.printf("%s30 %s6 %s10", "Name", "Age", "Donation");
        System.out.print("\n" + outp);

        input.close();

    }

}
kx1ctssn

kx1ctssn1#

在以下行中,使用d代替i作为int,使用f代替double作为d

str = String.format("%s-30%i-6$%d-20", name, age, donation);

您可以在这里阅读有关格式化语法http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html

k97glaaz

k97glaaz2#

在我的例子中,由于对齐,在$和s(%1:$ s)之间添加了空格。拆除空间工程

之前

<string name="ex_text">text: %1$ s</string>

之后

<string name="ex_text">text: %1$s</string>

相关问题