
本文讲解如何正确设计java类,使scanner输入的多个整数值(如门店编号和操作编号)能被类成员变量保存并供后续使用,避免语法错误和逻辑缺陷。
本文讲解如何正确设计java类,使scanner输入的多个整数值(如门店编号和操作编号)能被类成员变量保存并供后续使用,避免语法错误和逻辑缺陷。
在Java中,一个方法只能返回单个值(或一个对象),因此像 return Store, Week; 这样的写法是语法错误——Java不支持逗号分隔的多值返回。若需同时获取并保存多个用户输入值,推荐采用成员变量赋值 + 无返回值方法(void)的方式,而非试图“返回两个值”。
以下是优化后的标准实现方案:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
import java.util.Scanner;
public class UI {
private Scanner input = new Scanner(System.in);
private int store; // 建议使用小驼峰命名,提升可读性
private int week;
// 构造时自动采集输入,确保对象初始化即拥有有效数据
public UI() {
play();
}
// 无返回值方法:直接为成员变量赋值
public void play() {
System.out.print("Please enter the store #(1-6): ");
store = input.nextInt();
System.out.print("Please enter the operation (1-7): ");
week = input.nextInt();
}
// 提供公共访问器,供外部安全读取输入值
public int getStore() {
return store;
}
public int getWeek() {
return week;
}
// 可选:添加输入验证,增强健壮性
public void playWithValidation() {
store = readValidInt("store", 1, 6);
week = readValidInt("operation", 1, 7);
}
private int readValidInt(String name, int min, int max) {
int value;
do {
System.out.printf("Please enter the %s (%d-%d): ", name, min, max);
value = input.nextInt();
} while (value max);
return value;
}
}
关键要点说明:
✅ 避免非法返回语法:return a, b; 在Java中无效;应改用成员变量+getter模式。
✅ 封装优先:将 store 和 week 设为 private,通过 getXXX() 方法对外提供只读访问,符合面向对象设计原则。
✅ 构造器驱动初始化:在构造函数中调用 play(),确保对象创建后状态即完整可用。
✅ 增强鲁棒性(推荐):添加范围校验(如 readValidInt),防止用户输入越界值导致逻辑异常。
⚠️ 注意:Scanner 实例应在不再需要时调用 input.close()(通常在类生命周期结束时),避免资源泄漏;若 UI 实例长期存在,需谨慎管理关闭时机。
通过该设计,你可在其他代码中轻松使用这些值:
UI ui = new UI();
System.out.println("Store: " + ui.getStore() + ", Operation: " + ui.getWeek());
结构清晰、可维护性强,是处理多输入场景的推荐实践。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










