如何在Java的UI类中让play方法返回Store和Week值以供后续开发
解决Java方法返回多个值的问题
原代码里return Store,Week;的写法不符合Java语法,因为Java方法只能返回单个值。同时成员变量int Store ,Week = play();的初始化方式也有问题,没法用单个int值给两个变量赋值。下面给出几种可行的修改方案:
方案一:自定义数据类封装返回值
这是最推荐的方式,适合后续业务扩展,代码可读性高。
首先创建一个专门的类来存储门店编号和操作周数:
class StoreWeek { private final int storeNumber; private final int weekNumber; public StoreWeek(int storeNumber, int weekNumber) { this.storeNumber = storeNumber; this.weekNumber = weekNumber; } // Getter方法,方便获取属性值 public int getStoreNumber() { return storeNumber; } public int getWeekNumber() { return weekNumber; } }
然后修改UI类的代码:
import java.util.Scanner; public class UI { Scanner input = new Scanner(System.in); int store; int week; public UI() { // 在构造方法中调用play()获取值 StoreWeek result = play(); store = result.getStoreNumber(); week = result.getWeekNumber(); } public StoreWeek play() { System.out.print("Please enter the store #(1-6): "); int storeInput = input.nextInt(); System.out.print("Please enter the operation (1-7): "); int weekInput = input.nextInt(); return new StoreWeek(storeInput, weekInput); } }
方案二:使用数组返回值
如果不想额外创建类,可以用int数组来承载两个值,数组的第一个元素存门店编号,第二个存周数:
import java.util.Scanner; public class UI { Scanner input = new Scanner(System.in); int store; int week; public UI() { int[] result = play(); store = result[0]; week = result[1]; } public int[] play() { System.out.print("Please enter the store #(1-6): "); int storeInput = input.nextInt(); System.out.print("Please enter the operation (1-7): "); int weekInput = input.nextInt(); return new int[]{storeInput, weekInput}; } }
方案三:使用Java 16+的Record类(简洁版)
如果你的项目使用Java 16或更高版本,可以用Record类来简化数据封装,不需要手动写Getter和构造方法:
// Record类自动生成构造方法、Getter、equals等方法 record StoreWeek(int storeNumber, int weekNumber) {} import java.util.Scanner; public class UI { Scanner input = new Scanner(System.in); int store; int week; public UI() { StoreWeek result = play(); store = result.storeNumber(); week = result.weekNumber(); } public StoreWeek play() { System.out.print("Please enter the store #(1-6): "); int storeInput = input.nextInt(); System.out.print("Please enter the operation (1-7): "); int weekInput = input.nextInt(); return new StoreWeek(storeInput, weekInput); } }
额外说明
原代码中直接在成员变量声明时调用play()赋值的写法不合适,建议在构造方法或者专门的初始化方法中处理,避免初始化顺序问题。同时变量名遵循Java规范,用小驼峰(比如store而非Store)会更符合编码习惯。
内容的提问来源于stack exchange,提问作者coding beginner
相关产品推荐
相关产品推荐

