gpt4 book ai didi

java - 如何检测输入文件是否包含某些字段

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:23 27 4
gpt4 key购买 nike

我这里有这段代码,需要检测输入文件中是否有任何行不包含名字、姓氏或年级。然后,它需要为不正确的行抛出一个有意义的异常。我在设置 if 语句来检测每一行中的内容时遇到问题。我知道 inputFile.next 一次只能读取一个单词,并且我很确定我需要为整行创建另一个变量并合并 inputFile.nextLine。如果我从输入文件中取出姓名或成绩,它会抛出 ArrayOutOfBounds 异常,因为它想要看到三个单词。我想我真正想问的是如何检查是否有任何行包含三个单词。这是我的代码示例...

(被注释掉的代码部分是作业的另一部分,需要检查是否有成绩在 0 到 100 之间,如果是,则抛出异常,这部分我必须运行良好。)

我的输入文件:

迈克·托尼 98.7

玛丽汤姆 65.8

安托马斯 95.1

亚历克斯·莱德 178.6

package classwork11_2;

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;


public class Classwork11_2 {

public static void main(String[] args)throws IOException{


File input = new File("students.txt");

Scanner inputFile = new Scanner(input);
PrintWriter output = new PrintWriter("average.txt");

ArrayList<Student> array = new ArrayList<>();

double average = 0;
String name = "";
String header = "Average:";
double sum = 0;

while(inputFile.hasNext()){

String firstLine = inputFile.nextLine();
String[] word = firstLine.split(" ");

String fName = inputFile.next();
String lName = inputFile.next();
String grades = inputFile.next();

try{
/*double g = Double.parseDouble(grades);
if(g < 0 || g > 100)
throw new MyException(g);*/

if(word[0] == null || word[1] == null || word[2] == null)
throw new MyException("The names don't exist");
}
catch(MyException e){

System.out.println("Parsing line with " + fName + " " + lName + "
" + grades + " gave the following error: " + e.getMessage());
}

Student student = new Student(fName, lName, grades);
array.add(student);
name += student.getfName() + " " + student.getlName() + ", ";

}
for(Student i : array){

double num = Double.parseDouble(i.getGrade());
sum += num;
average = sum / array.size();
}

System.out.println(name.substring(0, name.length()-2));
System.out.printf("%-15s%10.1f\n", header, average);
inputFile.close();
output.close();

}
}

我的异常类:

    package chapter11_homework;


public class InvalidStringException extends Exception{


public InvalidStringException(String msg){

super(msg);
}
}

最佳答案

您调用了 calcWage 方法,但没有对它返回的值执行任何操作。您可以将该值存储在变量中,然后打印该变量:

double wage = calcWage(sum, hourRate);
JOptionPane.showMessageDialog(null, String.format("Amount paid should be: $%.2f\n",wage));

或者您可以直接打印方法返回的值:

JOptionPane.showMessageDialog(null, String.format("Amount paid should be: $%.2f\n",calcWage(sum, hourRate)));

关于java - 如何检测输入文件是否包含某些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53002646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com