发布于2026-07-12 阅读(0)
扫一扫,手机访问
本文讲解如何在Ja va中通过合理设计方法与类结构,将Scanner获取的多个用户输入值(如商店编号和操作编号)安全、高效地存储到类成员变量中,以便后续代码调用。
很多刚接触Ja va的朋友都会遇到一个尴尬的场景:在方法里用Scanner读了好几个数,想一股脑儿返回到调用方,结果发现return Store, Week;这行代码直接让编译器报错。其实,这不怪你,只怪Ja va的语法设计——它只允许返回一个值(或者一个对象)。那多值怎么处理?答案很简单:别想着“返回”,而是让输入结果直接成为类的一部分。
核心思路就是将输入值赋值给类的实例变量,把这些数据变成对象的“状态”,这样整个类生命周期内都能随时取用。具体怎么做?推荐一个简洁且健壮的模式:
play()方法的返回值类型改成void,不再试图返回数据;play(),保证对象一创建用户交互就完成;store和week保存输入值,默认类内可见。来看一个优化后的完整示例:
import ja va.util.Scanner;
public class UI {
private final Scanner input = new Scanner(System.in); // 推荐声明为final,避免意外重赋值
private int store; // 使用小驼峰命名,符合Ja va规范
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);
}
}
这段代码里要注意几个关键点:
play()里写return Store, Week;——Ja va不支持多值返回(不像Python的元组);Scanner声明为静态字段,否则多个实例会共享输入流,导致不可预知的行为;input.close(),比如提供一个close()方法,配合try-with-resources使用,防止资源泄漏;play()里加while循环和try-catch,确保输入合法后再赋值。通过这个设计,当你写UI ui = new UI();创建对象后,直接用ui.getStore()和ui.getWeek()就能拿到用户输入的值。后续无论扩展多少业务逻辑,数据都稳稳地待在对象的怀里,随时待命。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8