填写一些输入并将默认值设置为其他输入

时间:2015-02-22 15:16:00

标签: java input enums switch-statement case

我有三个不同枚举区域的输入选项,用户可以输入不同的捐赠。但是,让我们说用户只想向这些区域中的一个或两个捐款,然后我想让其他区域的默认值自动设置为0。

我试图弄清楚如何通过某种切换案例方法来解决这个问题,但我陷入了困境。这是我目前的代码,有人知道如何修复它吗?

public enum Areas { Schools, Healthcare, Environment }

private String socialnr;
private Areas area;
private float percentage = (float) 0.0; //default value for an area if not chosen

//Method to handle the choices:
public synchronized void areaChoice(Areas which) {

switch (which) {
    case Schools: {
        setPercentage(sc.nextFloat());
        break;
    }
    case Healthcare: {
        setPercentage(sc.nextFloat());
        break;
    }
    case Environment: {
        setPercentage(sc.nextFloat());
        break;
    }
}
}

所需的控制台结果:

" Type' Schools'捐赠给学校,'医疗保健'用于医疗保健和环境'环境捐赠..."

输入:学校

金额: 10

"要继续捐赠,请输入上述命令之一,或者退出'退出..."

输入:退出

[输出]:

学校:10.0,医疗保健:0.0,环境:0.0

1 个答案:

答案 0 :(得分:0)

在这种方法中,您在所有三种情况下都使用setPercentage(sc.nextFloat());,因此您并不需要切换声明。
您可以使用数组来存储所有三个百分比值并通过枚举类型进行迭代,因为枚举只是给定一些名称的一堆整数(您将遍历Area.values()数组)。 您还可以创建一个打印所有三个值的方法,但如果该区域是给定的区域,则只有非零值(为此,您可以使用switch语句)。此选项不需要数组,因此可能更适合您的想法。 希望有所帮助! 附:您不需要将浮点数初始化为0,它将自动在Java中完成。