创建一个在Java中接受double或string的类

时间:2016-09-03 01:21:10

标签: java

我正在尝试编程(在Java中)似乎是一组相对简单的要求,但我遇到类型问题。我想从仪器中获取科学数据并通过一些逻辑来得出答案。我的问题是数据要么作为字符串(总是"无")或双重来。数据集将是每个样本两个点。所以,这是我的想法:我需要有两个参数的类,可以是字符串或双精度。所以,我决定用类通用参数创建一个类。当谈到在双重或字符串上执行逻辑时,我遇到了麻烦。例如,以下是逻辑的两个部分:

如果v< 26和f在36.5和37之间,然后需要重新运行样本。

如果v> 31和f是"无"然后重新运行。

还有更多规则,但我不会在这里将它们全部包括在内,但v和f都可以是双倍的,也可以是"无"。

如果所有的值都是双倍的话我就没有问题,但是我可以得到双打或字符串的事实让我在尝试比较两者时遇到麻烦。我不确定是否可以使用通用类。有任何想法吗?

此外,这是我的第一篇文章,如果您需要更多信息或有关于发布的任何提示,请告诉我。

谢谢!

3 个答案:

答案 0 :(得分:1)

你错了:你的输入类型总是字符串(如果它可以是"None"它是一个字符串)。但是,它可以是带有数字的字符串和可以解析作为Double的点。

这样的事情应该会有所帮助:

public static Double parseInput(String input) {
    try {
        return input.equals("None") ? null : Double.valueOf(input);
    } catch (NumberFormatException | NullPointerException e) {
        return Double.NaN;
    }
}

这将返回“None”的null,这似乎是最合理的映射,并通过返回特殊的“非数字”Double值来处理任何不是数字(空白,空,坏数据)的任何内容。

答案 1 :(得分:0)

我建议您使用String作为参数类型,然后在您的类中,您可以尝试将值解析为double并在其上应用逻辑,如果值可以解析为double。

如果没有,则该值为String,您必须应用String值的逻辑

答案 2 :(得分:0)

  

如果所有的值都是双倍的话我就没问题了,

与@ Bohemian的答案类似,但我会使用NaN并将值保留原语。

public static double parseInput(String input) {
    return "None".equalsIgnoreCase(input) 
            ? Double.NaN
            : Double.parseDouble(input);
}

不检查使用

  

如果v> 31,f为“无”,然后重新运行。

if (v > 31 && Double.isNaN(f))