You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:27:49