Java将一个字符串中的两个整数拆分为double(转换时间)

时间:2013-03-11 01:33:53

标签: java string time

我对初始Java类的一项任务的一部分是将一个时间作为字符串输入并将其转换(在舍入到最接近的四分之一小时时)到一个double并将其存储在一个数组中。我遇到困难的部分是如何处理我从String类的split方法收到的两个整数。如何将两个整数组合成一个双精度才能在数组中使用? (所以它会像小时。分钟,或5.25) 以下是我正在处理的程序的代码片段:

    public static double convertClockOutTimes(String clockOut){
    double convertedTimeOut = 0;
    String time = clockOut;
    int hours;
    int minutes;
    String[]splitFields;
    splitFields = time.split(":");
    hours = Integer.parseInt(splitFields[0]);
    minutes = Integer.parseInt(splitFields[1]);
    if (minutes <= 7)
    {
        minutes = 0;
    }
    else if (minutes >= 8 || minutes <= 22)
    {
        minutes = 15;
    }
    else if (minutes >= 23 || minutes <= 37)
    {
        minutes = 30;
    }
    else if (minutes >= 31 || minutes <= 53)
    {
        minutes = 45;
    }
    else
    minutes = 0;
    hours = hours + 1;

    convertedTimeOut = //This is where I don't know what to do!!


   return convertedTimeOut;
    }

3 个答案:

答案 0 :(得分:2)

我认为诀窍是在这里使用一些数学。您可以随时执行以下操作:

double convertedTimeOut = Math.round(minutes / 15.0) * 0.25 + hours;

然后你不需要if-else树来计算最接近的四分之一小时。

一刻钟有15分钟,四分之一小时为0.25小时。使用上面的公式,您将分钟数除以您获得的小时数(0-4),然后乘以一小时内的小时数。然后将其添加到您已经达到的时间。

Math.round只为您进行四舍五入。

答案 1 :(得分:1)

我猜你最麻烦的是如何处理分钟。试试这个:

double minutesAsDecimal = 0.01 * minutes;

因此,如果分钟数是24,那么最终会得到0.24。我打赌你会知道从哪里去。

正如旁注,你的if和else ifs没有做你认为的那样。但是因为它是家庭作业..请仔细看看那里的逻辑。

答案 2 :(得分:0)

您的条件应该是AND而不是OR:

if(minutes >= 8 && minutes <= 22)

等等,或者更好的是,单个陈述,只需

minutes = ((minutes + 7) % 15) * 15;

使用算术而不是逻辑来计算舍入。