简体   繁体   中英

Exception in thread “main” java.util.UnknownFormatConversionException: Conversion = 'ti'

package chapterreader;


import java.util.Scanner;
import java.io.File;

public class ChapterReader {

    public static void main(String[] args) throws Exception {
        Chapter myChapter = new Chapter();
        File chapterFile = new File("toc.txt");
        Scanner chapterScanner;

        //check to see if the file exists to read the data
        if (chapterFile.exists()) {
            System.out.printf("%7Chapter %14Title %69Page %80Length");

            chapterScanner = new Scanner(chapterFile);
            //Set Delimiter as ';' & 'new line'
            chapterScanner.useDelimiter(";|\r\n");
            while (chapterScanner.hasNext()) {
                //Reads all the data from file and set it to the object Chapter
                myChapter.setChapterNumber(chapterScanner.nextInt());
                myChapter.setChapterTitle(chapterScanner.next());
                myChapter.setStartingPageNumber(chapterScanner.nextInt());
                myChapter.setEndingPageNumber(chapterScanner.nextInt());
                displayProduct(myChapter);

            }
            chapterScanner.close();
        } else {
            System.out.println("Missing Chapter File");

        }

    }

    //Display the Chapter Information in a correct Format
    public static void displayProduct(Chapter reportProduct) {

        System.out.printf("%7d", reportProduct.getChapterNumber());
        System.out.printf("%-60s", reportProduct.getChapterTitle());
        System.out.printf("%-6d", reportProduct.getStartingPageNumber());
        System.out.printf("%-7d%n", reportProduct.getEndingPageNumber());
    }
}

But then I got an Error:

run: Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'ti' at java.util.Formatter$FormatSpecifier.checkDateTime(Formatter.java:2915) at java.util.Formatter$FormatSpecifier.(Formatter.java:2678) at java.util.Formatter.parse(Formatter.java:2528) at java.util.Formatter.format(Formatter.java:2469) at java.io.PrintStream.format(PrintStream.java:970) at java.io.PrintStream.printf(PrintStream.java:871) at chapterreader.ChapterReader.main(ChapterReader.java:17) Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds)

What's wrong with this error? Please, Help!

Your below statement is not formattable. That why it throws UnknownFormatConversionException

 System.out.printf("%7Chapter %14Title %69Page %80Length");

If you want to separate these words than use following way

System.out.printf("%7s %14s %69s %80s", "Chapter", "Title", "Page", "Length");

Instead of

System.out.printf("%7Chapter %14Title %69Page %80Length");

I think you wanted something like

System.out.printf("%7s %14s %69s %80s%n", "Chapter", "Title", "Page",
        "Length");

and your message is telling you that your format String (s) aren't valid ( %14Ti ). The Formatter#syntax javadoc says (in part)

't' , 'T' date/time Prefix for date and time conversion characters. See Date/Time Conversions .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM