Java方法重复执行问题求助:scanInput1多次触发程序陷入循环
Java代码执行异常问题修复
问题根源
- scanInput1重复执行两次:main方法中先调用了
scanInput1(),随后arrayskapare()内部再次调用scanInput1(),导致该方法被执行两次。 - medelvarde方法无法正常执行且循环跳转:
medelvarde()中两次调用arrayskapare(),每次调用都会重新触发输入逻辑(包括调用scanInput1());- 方法末尾
return medelvarde();是无限递归调用,导致程序永远循环执行medelvarde()→arrayskapare()→scanInput1()的流程。
- scanInput1递归逻辑缺陷:当输入无效值时,递归调用
scanInput1()但未返回其结果,会导致最终返回的是最初的无效输入字符串。
修复后的代码
import java.util.*; class Heltalshanterare{ // 共用一个Scanner实例,避免重复创建 private static final Scanner scanner = new Scanner(System.in); private static String scanInput1(){ System.out.print("Skriv in antal heltal: "); String antalHeltal = scanner.next(); try { Integer.parseInt(antalHeltal); } catch (NumberFormatException e) { System.out.println("Ogiltigt värde"); // 递归调用时返回结果,确保返回有效输入 return scanInput1(); } return antalHeltal; } private static List<Integer> arrayskapare() { int antalangivnatal = Integer.parseInt(scanInput1()); int noll = 1; int heltal = 0; String tal1 = ""; List<Integer> list = new ArrayList<>(); while (noll <= antalangivnatal) { noll++; heltal++; System.out.print("ange heltal " + heltal + ": "); tal1 = scanner.next(); try { int num = Integer.parseInt(tal1); list.add(num); } catch (NumberFormatException e) { System.out.println("Ogiltigt värde"); noll--; heltal--; } } return list; } public static int medelvarde(){ // 只调用一次arrayskapare并保存结果,避免重复执行输入逻辑 List<Integer> talLista = arrayskapare(); int antalsiffror = talLista.size(); int sum = 0; for (int i : talLista){ sum += i; } int medelvärde = sum / antalsiffror; System.out.println("medelvärdet av dina tal är " + medelvärde); // 返回计算结果,移除无限递归 return medelvärde; } public static void main(String [] args){ // 仅调用medelvarde即可,后续流程会自动触发 medelvarde(); } }
关键修复点说明
- 复用Scanner:创建全局静态Scanner实例,避免每个方法重复创建,减少资源消耗。
- 修正scanInput1递归返回:异常时递归调用
scanInput1()并返回其结果,确保最终返回的是有效输入值。 - 简化main方法调用:仅调用
medelvarde(),避免重复触发输入流程。 - 避免arrayskapare重复执行:将
arrayskapare()的结果存入变量,在计算总和和数量时复用该变量,防止多次执行输入逻辑。 - 移除无限递归:
medelvarde()返回计算后的平均值,不再递归调用自身。
内容的提问来源于stack exchange,提问作者teambubbel
相关产品推荐
相关产品推荐

