Java中switch触发default分支时循环提示用户输入合法成绩的实现方法
Java学生成绩等级判定循环重输入实现方案
核心思路是通过无限循环包裹输入、判定逻辑,仅当用户输入合法成绩时才退出循环,非法输入时停留在循环内引导重新输入。
完整可运行代码
package com.mhm; import java.util.Scanner; public class StudentGrade { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 外层循环标签,用于合法输入后直接跳出整个循环 outer: while (true) { System.out.println("Enter your grade: "); String grade = in.nextLine(); switch (grade) { case "A": case "a": System.out.println("Excellent."); break outer; case "B": case "b": System.out.println("OutStanding."); break outer; case "C": case "c": System.out.println("Good"); break outer; case "D": case "d": System.out.println("Can Do Better "); break outer; case "F": case "f": System.out.println("Failed !"); break outer; default: System.out.println("invalid grade, please try again."); } } in.close(); } }
改动说明
- 新增
while(true)无限循环包裹输入、判定全流程,默认会一直重复执行输入判定逻辑 - 给外层循环加了
outer标签,合法成绩的case分支输出评价后,直接用break outer跳出整个循环,结束程序 - default分支仅输出非法提示,不做跳出操作,自动进入下一轮循环要求用户重新输入
- 新增了小写字母的兼容分支,用户输入小写a/b/c/d/f也能正常识别,降低输入要求
- 最后新增了Scanner资源关闭逻辑,避免资源泄露
内容的提问来源于stack exchange,提问作者mohamed hesen
相关产品推荐
相关产品推荐

