【问题标题】:Fill in some inputs and set default value to other inputs填写一些输入并将默认值设置为其他输入
【发布时间】:2015-02-22 15:15:59
【问题描述】:

我有三个不同枚举区域的输入选择,用户可以输入不同的捐款。但是假设一个用户只想向其中一个或两个区域捐款,那么我希望其他区域的默认值自动设置为 0。

我试图弄清楚如何使用某种 switch-case-method 来解决这个问题,但我被卡住了。这是我目前的代码,有人知道如何修复它吗?

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;
    }
}
}

期望的控制台结果:

“输入“学校”捐赠给学校,输入“医疗保健”输入医疗保健,输入“环境”输入环境捐赠......”

输入:学校

金额:10

“要继续捐赠,请键入上述命令之一,或者‘退出’退出...”

输入:退出

[输出]:

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

【问题讨论】:

  • 我们需要在这里查看更多代码。目前尚不清楚您的 setPercentage() 方法在做什么,也不清楚您将用户迄今为止输入的信息存储在何处/如何存储。

标签: java input enums switch-statement case


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    相关资源
    最近更新 更多