Я знаю, что исключение - это бессмысленно, но я пытался научиться использовать/создавать исключения, поэтому я использовал это. Единственная проблема - по какой-то причине мое сообщение об ошибке, генерируемое моим исключением, дважды печатает на консоли.Java Exception print дважды
импорт java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; импорт java.util.Scanner;
public class Project3
{
public static void main(String[] args)
{
try
{
String inputFileName = null;
if (args.length > 0)
inputFileName = args[0];
File inputFile = FileGetter.getFile(
"Please enter the full path of the input file: ", inputFileName);
String outputFileName = null;
if (args.length > 1)
outputFileName = args[1];
File outputFile = FileGetter.getFile(
"Please enter the full path of the output file: ", outputFileName);
Scanner in = new Scanner(inputFile);
PrintStream out = new PrintStream(outputFile);
Person person = null;
// Read records from input file, get an object from the factory,
// output the class to the output file.
while(in.hasNext())
{
String personRecord = in.nextLine();
person = PersonFactory.getPerson(personRecord);
person.display();
person.output(out);
}
} catch (Exception e)
{
System.err.println(e.getMessage());
}
}
}
import java.util.Scanner;
class Student extends Person
{
private double gpa;
public Student()
{
super();
gpa = 0.0;
}
public Student(String firstName, String lastName, double gpa)
{
super(firstName, lastName);
this.gpa = gpa;
}
public String toString(){
try{
if (gpa >= 0.0 && gpa <= 4.0){
return super.toString() + "\n\tGPA: " + gpa;
}
else {
throw new InvalidGpaException();
}
}
catch (InvalidGpaException e){
System.out.println(e);
return super.toString() + "\n\tGPA: " + gpa;
}
}
public void display()
{
System.out.println("<<Student>>" + this);
}
@Override
public void input(Scanner in)
{
super.input(in);
if (in.hasNextDouble())
{
this.gpa = in.nextDouble();
}
}
class InvalidGpaException extends Exception {
public InvalidGpaException() {
super("Invalid GPA: " + gpa);
}
}
}
Это моя консольная индикация. Не уверен, что заставляет исключение печатать дважды.
project3.Student$InvalidGpaException: Invalid GPA: -4.0
<< Student>>
Id: 2 Doe, Junior
GPA: -4.0
project3.Student$InvalidGpaException: Invalid GPA: -4.0
Редактировать: Главный код на верхнем. Ввод - это файл, назначенный пользователем. То, что я показал здесь, это моя распечатка в консоли, а не то, что возвращается в выходной файл. В выходном файле отображается то же самое минус сообщение об ошибке. Сообщение об ошибке из исключения (которое я знаю не обязательно) печатается только на консоли. Я не вижу, где я печатаю его дважды.
Увидеть код, который запускает этот (возможно, ваш метод 'main'), будет наиболее полезным. –
Основной код сейчас. – Tyler