java.util.IllegalFormatPrecisionException:null(在.java.util.Formatter$FormatSpecifier中)
我的代码已编译,但在System.out.printf(%8d、%.1f…等)中有运行时错误 这是我的密码: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("
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);