我的任务有问题。正在发生的事情是正在读取一个文件,该文件读取数字并验证它们是否是正确的值。其中一个值包含一个字母,我试图让我的程序检测到它并保存不应该存在的总值。这是代码。我正在将数据读取为字符串,然后将字符串转换为要比较的双精度。我想验证读入的字符串是否都是数字,然后保存该值以备后用。那有意义吗?例如,数字必须介于 0 和 99999 之间,并且一个值为 573S1,因为它包含一个 S,所以它不起作用。我想将该值 573S1 保存为稍后从文件中打印为错误代码。
public static void validateData() throws IOException{
File myfile = new File("gradeInput.txt");
Scanner inputFile = new Scanner(myfile);
for (int i=0; i<33; i++){
String studentId = inputFile.next();
String toBeDouble = studentId;
Double fromString = new Double(toBeDouble);
if (fromString<0||fromString>99999){
System.out.println();
}
任何帮助将不胜感激。非常感谢!
编辑:如果我尝试运行该程序,这就是我得到的。
Exception in thread "main" java.lang.NumberFormatException: For input string: "573S1"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.valueOf(Double.java:475)
at java.lang.Double.<init>(Double.java:567)
at Paniagua_Grading.validateData(Paniagua_Grading.java:23)
at Paniagua_Grading.main(Paniagua_Grading.java:6)