2015-11-07 65 views
-3
void catalog() 
    { 
     System.out.printf("\n%-5s%-5s%-15s%-15s%-6s%-15s%-5d\n", 
      "Sno.","B.No.","BOOK-NAME","AUTHOR-NAME","COPIES","PUBLISHER","PRICE"); 
     for(int i=1;i<53;i++) 
      System.out.print("-"); 
     System.out.println(); 
     for(int i=0;i<nob;i++) 
      System.out.printf("%-5d%-5d%-15s%-15s%-5d%-10s%-10d\n", 
       (i+1),bno[i],bname[i],author[i],availcopies[i],publisher[i],price[i]); 
     for(int i=1;i<53;i++) 
      System.out.print("-"); 
     System.out.println(); 
    } 

我有在Java中使用的printf这个问题,所以这是错误我用的printf得到的Java printf的帮助中格式化

java.util.MissingFormatArgumentException: Format specifier '%-15s' 
    at java.util.Formatter.format(Formatter.java:2519) 
    at java.io.PrintStream.format(PrintStream.java:970) 
    at java.io.PrintStream.printf(PrintStream.java:871) 
    at Library.catalog(LibrarySystem.java:162) 
    at LibrarySystem.main(LibrarySystem.java:218) 
+0

你想要做什么? –

+0

我想打印一张表,列出数组的细节 –

+0

尝试使用' - %s'而不是'%-s' –

回答

0

更改线路

System.out.printf("\n%-5s%-5s%-15s%-15s%-6s%-15s%-5d\n", 
      "Sno.","B.No.","BOOK-NAME","AUTHOR-NAME","COPIES","PUBLISHER","PRICE"); 

System.out.printf("\n%-5s%-5s%-15s%-15s%-6s%-15s%-5s\n", 
      "Sno.","B.No.","BOOK-NAME","AUTHOR-NAME","COPIES","PUBLISHER","PRICE"); 

因为最后一部分%-5D \ n”将努力让int值,但你想要打印字符串,即“PRICE”

休息很好。

简单的错误

0

System.out.printf("\n%-5s%-5s%-15s%-15s%-6s%-15s%-5d\n", 
    "Sno.","B.No.","BOOK-NAME","AUTHOR-NAME","COPIES","PUBLISHER","PRICE"); 

不会因为工作最后是一个数字,你把它传递给字符串“PRICE”。

您应该为列名称使用不同的格式字符串。

列名:"\n%-5s%-5s%-15s%-15s%-6s%-15s%-5s\n"