本文介绍在java中通过构造方法或封装方式获取scanner输入的多个整数值,并将其安全存储到类成员变量中,避免语法错误和设计缺陷。
本文介绍在java中通过构造方法或封装方式获取scanner输入的多个整数值,并将其安全存储到类成员变量中,避免语法错误和设计缺陷。
在Java中,一个方法不能直接返回多个基本类型值(如 return Store, Week; 是非法语法),这与Python等支持元组返回的语言不同。因此,若需从用户输入中获取并持久化多个值(如 Store 和 Week),必须采用符合Java语义的设计方式:将输入逻辑封装为无返回值方法(void),并在类内部通过成员变量保存结果。
以下是一个规范、健壮的实现方案:
import java.util.Scanner;
public class UI {
private final Scanner input = new Scanner(System.in); // 推荐声明为final,避免意外重赋值
private int store; // 使用小驼峰命名,符合Java惯例
private int week;
// 构造时自动执行输入流程,确保对象初始化即完成数据采集
public UI() {
play();
}
// 专用输入方法:职责单一,不返回值,仅负责读取并赋值
public void play() {
System.out.print("Please enter the store #(1-6): ");
while (true) {
if (input.hasNextInt()) {
int tempStore = input.nextInt();
if (tempStore >= 1 && tempStore <= 6) {
this.store = tempStore;
break;
} else {
System.out.print("Invalid store number. Please enter a number between 1 and 6: ");
}
} else {
System.out.print("Invalid input. Please enter a valid integer: ");
input.next(); // 清除非法输入
}
}
System.out.print("Please enter the operation (1-7): ");
while (true) {
if (input.hasNextInt()) {
int tempWeek = input.nextInt();
if (tempWeek >= 1 && tempWeek <= 7) {
this.week = tempWeek;
break;
} else {
System.out.print("Invalid operation. Please enter a number between 1 and 7: ");
}
} else {
System.out.print("Invalid input. Please enter a valid integer: ");
input.next();
}
}
}
// 提供公共getter方法,支持外部安全访问(封装性原则)
public int getStore() {
return store;
}
public int getWeek() {
return week;
}
// 示例:后续业务逻辑可直接使用这些值
public void executeOperation() {
System.out.printf("Executing operation %d for store %d%n", week, store);
// 此处可接入实际业务逻辑
}
}✅ 关键要点说明:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 禁止多返回值写法:return Store, Week; 在Java中编译不通过,必须改用 void 方法 + 成员变量赋值;
- 构造器驱动初始化:在构造函数中调用 play(),保证对象创建后 store 和 week 已就绪;
- 增强健壮性:添加输入校验与异常处理循环,防止因非法输入导致程序崩溃;
- 遵循封装原则:成员变量设为 private,通过 getter 方法对外提供只读访问;
- 命名与风格规范:使用小驼峰(store, week)替代全大写(Store, Week),提升代码可读性与专业性。
⚠️ 注意:Scanner 实例应在使用完毕后调用 input.close()(通常在类销毁前),但若 UI 实例生命周期短或 Scanner 用于标准输入(System.in),关闭需谨慎——关闭 System.in 会影响后续其他输入操作。如需长期复用,建议将 Scanner 管理权交由上层统一控制。
立即学习“Java免费学习笔记(深入)”;

















