0

我有以下功能

private Integer calculateWeeklyValue(String p_Value, String Frequency) {

    if (p_Value.length() == 0)
        p_Value = "0";
    Integer Value = Integer.parseInt(p_Value);
    if (Frequency.equals("W"))
        return (Integer)Value;
    else if (Frequency.equals("F"))
        return (Integer)((Value / 2));
    else if (Frequency.equals("M"))
        return (Integer)((Value * 12) / 52);
    else if (Frequency.equals("Q"))
        return (Integer)((Value * 4) / 52);
    else if (Frequency.equals("Y"))
        return (Integer)(Value / 52);
    else
        return 0;

}

它总是返回变量“Value”的结果,即使它匹配不同的情况。例如。它转到“返回(整数)((值* 12)/ 52);” 但随后返回 0 并返回“值”。可能是一个愚蠢的问题,但坚持这一点。

4

3 回答 3

2

使用. 并int检查您Value的始终为 0。

 int Value = Integer.parseInt(p_Value); and return type also `int`.
于 2012-06-29T05:29:58.510 回答
0

看起来 的长度p_Value始终为 0。此外,用大写首字母命名变量也是不好的做法。

于 2012-06-29T05:29:17.603 回答
0

您只需要将方法的返回类型从 Integer 更改为 double 或 long 或 float,因为 int 始终返回数字而不是小数部分,并且您的计算正在返回.something并且已转换为0,因此请确保使用此类计算方法的返回类型是总是加倍或浮动等。

private Integer calculateWeeklyValue(String p_Value, String Frequency) {}

                     to 

private double calculateWeeklyValue(String p_Value, String Frequency) 
于 2012-06-29T05:38:19.173 回答