Java 如果在循环的迭代过程中输入了无效的输入,如何使循环在当前迭代中重新开始
我是编程新手,正在处理一个Java任务,其中一个用户命名一个文件。然后,该文件被传递给一个方法,供用户写入测试等级,然后传递给另一个方法,以读取和显示具有类平均值的测试等级 我目前正在研究将学生成绩写入我已成功完成的文件的方法,但如果输入了非数值,我需要执行错误检查。我使用了一个带有try-and-catch的while循环,用于inputmaschException,该循环有时可以工作。如果在循环的第一次迭代中输入了无效输入,它将捕获该输入并重复,但是如果在第一次迭代之外的任何其他迭代中输入了无效输入,它将捕获InputMismatchException,但它也将跳出循环并继续下一个方法。如何让循环在无效循环的迭代中开始。我将感谢任何帮助,如果我的代码写得很差,我很抱歉,因为我对编程非常陌生 以下是我正在研究的方法:Java 如果在循环的迭代过程中输入了无效的输入,如何使循环在当前迭代中重新开始,java,while-loop,iteration,try-catch,inputmismatchexception,Java,While Loop,Iteration,Try Catch,Inputmismatchexception,我是编程新手,正在处理一个Java任务,其中一个用户命名一个文件。然后,该文件被传递给一个方法,供用户写入测试等级,然后传递给另一个方法,以读取和显示具有类平均值的测试等级 我目前正在研究将学生成绩写入我已成功完成的文件的方法,但如果输入了非数值,我需要执行错误检查。我使用了一个带有try-and-catch的while循环,用于inputmaschException,该循环有时可以工作。如果在循环的第一次迭代中输入了无效输入,它将捕获该输入并重复,但是如果在第一次迭代之外的任何其他迭代中输入了
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());
}
}
公共静态无效输入分数(字符串newFile)
{
扫描仪扫描=新扫描仪(System.in);
格式化程序写入;
尝试
{
write=新格式化程序(newFile+“.txt”);
双倍得分=0.0;
整数计数=1;
布尔值=假;
而(!再次){
尝试
{
而(分数>=0)
{
System.out.print(“请输入学生“+count+”的考试分数,输入-1退出:\n>”;
分数=scan.nextDouble();
再次=正确;
计数++;
如果(分数>=0)
{
write.format(“%.2f%n”,分数);
}
否则(得分)
尝试此代码。希望这将满足您的要求
catch(InputMismatchException ex){reach=false;}
?是的!这很有效。非常感谢,非常感谢!@Eifferflowers如果你得到了答案,请投票并标记为已回答,或者如果你没有足够的声誉,那么至少你会喜欢它。
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());
}
}