我是编程新手,正在从事Java分配,即用户命名文件的工作。然后将文件传递给用户以编写测试成绩的方法,然后传递给另一种方法以读取和显示具有班级平均值的测试成绩。
我目前正在研究将学生成绩写入成功完成的文件的方法,但是如果输入了非数值,我需要进行错误检查。我使用了try和catch的while循环来获取InputMismatchException,有时该循环有效。如果在循环的第一个迭代中输入了无效的输入,它将捕获并重复,但是,如果除了第一个迭代以外的任何其他迭代中输入了无效的输入,则它将捕获InputMismatchException,但也会脱离循环并继续转到下一个方法。我如何使循环从无效的循环迭代开始。我将不胜感激,如果我的代码写得不好,因为我是编程新手,对不起。
这是我正在研究的方法:
public static void inputScores(String newFile)
{
Scanner scan = new Scanner(System.in);
Formatter write;
try
{
write = new Formatter(newFile +".txt");
double score = 0.0;
int count = 1;
boolean again = false;
while(!again){
try
{
while(score >= 0)
{
System.out.print("Please enter student " + count + "'s test score, input -1 to quit:\n>");
score = scan.nextDouble();
again = true;
count++;
if(score >= 0)
{
write.format("%.2f%n", score);
}
else if(score <= -1)
{
break;
}
}
}
catch(InputMismatchException ex){
System.out.println("Invalid input, Student's scores must be a number");
scan.next();
}
}
write.close();
}
catch(FileNotFoundException e)
{
System.out.println(e.getMessage());
}
}
答案 0 :(得分:0)
尝试此代码。希望这能满足您的要求。
public static void inputScores(String newFile) {
Scanner scan = new Scanner(System.in);
Formatter write=null;
try {
write = new Formatter(newFile + ".txt");
double score = 0.0;
int count = 1;
while(true) {
try {
System.out.println("Please enter student " + count + "'s test score, input -1 to quit:\n>");
score = scan.nextDouble();
count++;
if(score>=0)
write.format("%.2f%n", score);
else
break;
}catch (InputMismatchException e) {
System.err.println("Invalid input, Student's scores must be a number");
scan.next();
System.out.println();
}
}
write.close();
scan.close();
}
catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
}