You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发20%折扣计算器时遇unnamed package not allowed in module错误求助

问题解决:折扣计算器的模块错误与代码修正

翻译后的错误信息

引导层初始化期间发生错误
java.lang.module.FindException: 读取模块时出错: C:\Users\ceyze\eclipse-workspace\SalePriceCalculator\bin
引起原因: java.lang.module.InvalidModuleDescriptorException: 在顶级目录中发现project.class(模块中不允许使用未命名包)

问题1:模块系统错误解决

你的项目启用了Java模块系统,但类文件放在了未命名包(无package声明)中,模块系统不允许这种情况,两种解决方式二选一:

  • 给类添加包声明:在import语句前添加package 自定义包名;(比如package com.salecalculator;)
  • 改为非模块化项目:在Eclipse中右键项目→属性→Java Build Path→Libraries,移除Modulepath中的模块,或直接创建普通Java项目。

问题2:代码逻辑与语法错误修正

原代码存在两个关键问题:

  • old_price未初始化就参与计算,会触发编译错误,需要先通过Scanner读取用户输入赋值给它
  • 折扣计算公式错误:打20%折扣应该是原价乘以80%,即(1 - 0.2),原代码(1+0.2)是涨价20%,与需求相反

修正后的完整代码

package com.salecalculator; // 自定义包名,解决模块问题
import java.util.Scanner;

public class Project { // 类名首字母大写,符合Java命名规范
    public static void main(String[] args) {
        double old_price;
        double new_price;
        
        Scanner scan = new Scanner(System.in);
        
        System.out.println("请输入商品的原价:");
        old_price = scan.nextDouble(); // 读取用户输入的原价
        
        new_price = old_price * (1 - 0.2); // 正确计算20%折扣后的价格
        System.out.println("折扣后的价格为:" + new_price);
        
        scan.close(); // 关闭Scanner资源,避免资源泄漏
    }
}

内容的提问来源于stack exchange,提问作者Hoi Yin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:01:23