
本文讲解如何在java中通过合理设计方法与类结构,将scanner获取的多个用户输入值(如商店编号和操作编号)安全、高效地存储到类成员变量中,以便后续代码调用。
本文讲解如何在java中通过合理设计方法与类结构,将scanner获取的多个用户输入值(如商店编号和操作编号)安全、高效地存储到类成员变量中,以便后续代码调用。
在Java中,一个方法只能返回单一值(或一个对象),因此像 return Store, Week; 这样的写法是语法错误,编译无法通过。若需同时获取并保存多个输入值,核心思路不是“返回多个值”,而是将输入结果直接赋值给类的实例变量,使其成为对象状态的一部分,供整个类生命周期内复用。
推荐采用以下简洁、健壮的设计方式:
- 移除有返回值的方法签名:将 play() 改为 void 类型;
- 在构造器中初始化输入流程:确保对象创建时即完成用户交互;
- 使用私有实例变量承载输入数据:如 Store 和 Week,默认具备类内可见性。
以下是优化后的完整示例代码:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
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): ");
this.store = input.nextInt();
System.out.print("Please enter the operation (1-7): ");
this.week = input.nextInt();
}
// 提供公共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免费学习笔记(深入)”;
- 避免在 play() 中使用 return Store, Week; —— Java不支持多值返回(区别于Python元组);
- 不要将 Scanner 声明为静态字段,否则多实例间会共享输入流,引发不可预知行为;
- 为防止资源泄漏,实际项目中应在适当位置调用 input.close()(例如在类提供 close() 方法并配合 try-with-resources);
- 若需更灵活的输入校验(如范围检查、异常处理),应在 play() 内添加 while 循环与 try-catch,确保输入合法后再赋值。
通过该设计,UI ui = new UI(); 创建对象后,ui.getStore() 和 ui.getWeek() 即可随时获取已录入的数值,完全满足后续逻辑扩展需求。

















