You need to enable JavaScript to run this app. Java中如何为Scanner设置输入数值范围,实现考试分数0-100合法性校验
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何为Scanner设置输入数值范围,实现考试分数0-100合法性校验

实现方案

你可以封装一个独立的分数读取校验方法,避免每个科目重复写校验逻辑,输入不合法时循环提示用户重新输入,直到输入符合0-100的范围要求。

修改后的完整代码如下:

package com.company;
import java.util.Scanner;

public class CbseCalculator {
    // 封装校验分数的方法,传入科目名称,返回合法的分数值
    private static float getValidMarks(Scanner sc, String subject) {
        float marks;
        while (true) {
            System.out.println("请输入" + subject + "的考试分数");
            marks = sc.nextFloat();
            // 0-100范围校验
            if (marks >= 0 && marks <= 100) {
                break;
            }
            System.out.println("输入无效,分数必须在0到100之间,请重新输入");
        }
        return marks;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        float physics = getValidMarks(sc, "物理");
        float chemistry = getValidMarks(sc, "化学");
        float math = getValidMarks(sc, "数学");
        float english = getValidMarks(sc, "英语");
        float computer = getValidMarks(sc, "计算机科学");

        float total = 500;
        float obtained = (physics + chemistry + math + english + computer);
        float percentage = (obtained/total)*100;
        System.out.println("最终所得百分比为: "+percentage);
        sc.close();
    }
}

逻辑说明

  • 单独封装getValidMarks方法处理分数输入和校验,减少重复代码,后续要新增科目也可以直接复用该方法
  • 用while(true)做循环校验,只有当输入分数满足>=0且<=100的条件时才跳出循环返回分数,否则一直提示用户重新输入
  • 如果需要兼容用户输入非数字的场景,可以额外加InputMismatchException异常捕获处理,避免程序直接崩溃。

内容的提问来源于stack exchange,提问作者Neetesh Khanal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 04:45:04