java.util.IllegalFormatPrecisionException:null(在.java.util.Formatter$FormatSpecifier中)

java.util.IllegalFormatPrecisionException:null(在.java.util.Formatter$FormatSpecifier中),java,Java,我的代码已编译,但在System.out.printf(%8d、%.1f…等)中有运行时错误 这是我的密码: import java.io.*; import java.util.Scanner; public class StudentGPA { public static void main(String[] args) throws FileNotFoundException { Scanner in = new Scanner(new File("

我的代码已编译,但在System.out.printf(%8d、%.1f…等)中有运行时错误

这是我的密码:

import java.io.*;
import java.util.Scanner;
public class StudentGPA
{
    public static void main(String[] args)
    throws FileNotFoundException
    {
        Scanner in = new Scanner(new File("data2.txt"));
        int studentNum,classNum,ctr;
        double avg,hours,grade,gradePts,hrsTot,gradePtsTot,GPA;        
        System.out.println("Fall 2013  Project 2  Due 9/19/13  by Tanner Triggs");
        System.out.println("STUDENT    CLASS      HOURS       GRADE       GRADE POINTS\r");

        hrsTot = 0;
        gradePtsTot = 0;
        ctr = 0;
        studentNum=in.nextInt();
        classNum=in.nextInt();
        hours=in.nextDouble();
        grade=in.nextDouble();

        while(studentNum!= -999)
        {  ctr++;
            gradePts = hours * grade;
            hrsTot+=hours;
            gradePtsTot+=gradePts;            
            System.out.printf("%8d       %.1d      %.1f       %5.2f         %.1f \r\n\n",studentNum,classNum,hours,grade,gradePts);
            studentNum=in.nextInt();
            classNum=in.nextInt();
            hours=in.nextDouble();
            grade=in.nextDouble();
            gradePts=in.nextDouble();
            GPA=1.0 * gradePtsTot / hrsTot;            
            System.out.printf("Totals:     %5.1f           %5.2f\r\n",hrsTot,gradePtsTot);           
            System.out.printf("\nSemester GPA: %.2f",GPA);


        }
    }
}
我相信我所有的“f”和“d”都是正确的,所以我想可能是别的

以下是数据2:

87126534   1151   5.0    3.0
87126534   5100   3.0    2.0
87126534   4101   4.0    4.0
87126534   13198  2.0    2.0
87126534   2100   3.0    4.0
-999       0      0      0

%.1d
中删除点,因为
%d
格式化程序用于整数值(整数、长等)。因此,您的格式化程序将仅为
%1d

%.1d
中删除点,因为
%d
格式化程序用于整数值(整数、长等)。因此,您的格式化程序将仅为
%1d
%.1d
中删除点,因为
%d
格式化程序用于整数值(整数、长等)。因此,您的格式化程序将仅为
%1d
%.1d
中删除点,因为
%d
格式化程序用于整数值(整数、长等)。因此,您的格式化程序将仅为
%1d
您尚未发布堆栈跟踪,但有一个问题:

从第二个格式说明符中删除小数部分,以与提供的整数值(
classNum
)相对应


您尚未发布stacktrace,但有一个问题:

从第二个格式说明符中删除小数部分,以与提供的整数值(
classNum
)相对应


您尚未发布stacktrace,但有一个问题:

从第二个格式说明符中删除小数部分,以与提供的整数值(
classNum
)相对应


您尚未发布stacktrace,但有一个问题:

从第二个格式说明符中删除小数部分,以与提供的整数值(
classNum
)相对应


%d
代表
十进制
(以10为基数的整数),而不是
双精度

%.1d
没有意义


%d
代表
十进制
(以10为基数的整数),而不是
双精度

%.1d
没有意义


%d
代表
十进制
(以10为基数的整数),而不是
双精度

%.1d
没有意义


%d
代表
十进制
(以10为基数的整数),而不是
双精度

%.1d
没有意义


帮助我们帮助你。发布完整stacktrace。帮助我们帮助你。发布完整stacktrace。帮助我们帮助你。发布完整stacktrace。帮助我们帮助你。发布完整stacktrace。这是正确的。谢谢。我忘了你不能将小数与“d”连用@Tanner11没问题。别忘了投票并接受别人的答案,无论哪一个最能回答你的问题。那是正确的,谢谢。我忘了你不能用小数加“d”@Tanner11没问题。别忘了投票并接受别人的答案,无论哪一个最能回答你的问题。那是正确的,谢谢。我忘了你不能用小数加“d”@Tanner11没问题。别忘了投票并接受别人的答案,无论谁最能回答你的问题。那是正确的,谢谢。我忘了你不能用小数加“d”@Tanner11没问题。别忘了投票并接受别人的答案,无论谁最能回答你的问题。
System.out.printf
      ("%8d       %1d      %.1f       %5.2f         %.1f \r\n\n", 
          studentNum, classNum, hours, grade, gradePts);