开发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
相关产品推荐
相关产品推荐

