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

Java将字符串中的两个整数拆分为double(转换时间),java,string,time,Java,String,Time,对于一个开始的Java类,我有一个任务,那就是获取一个作为字符串输入的时间,并将其转换(四舍五入到最接近的四分之一小时)为double,并将其存储在一个数组中。我很难处理的部分是如何处理从String类的split方法收到的两个整数。如何将两个整数转换为一个双精度整数以在数组中使用?(因此可能是小时、分钟或5.25) 以下是我正在处理的一个程序的代码片段: public static double convertClockOutTimes(String clockOut){ do

对于一个开始的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;
    }
公共静态双转换器时钟断开时间(字符串时钟断开){
双转换超时=0;
字符串时间=时钟输出;
整小时;
整数分钟;
字符串[]拆分字段;
splitFields=time.split(“:”);
小时数=整数.parseInt(拆分字段[0]);
分钟数=整数.parseInt(拆分字段[1]);

如果(分钟=8 | |分钟=23 | |分钟=31 | | |分钟我猜给你带来最大麻烦的是如何处理这些分钟。试试这个:

double minutesAsDecimal = 0.01 * minutes;
因此,如果分钟数是24,那么你最终会得到0.24。我打赌你会知道从那里开始的方向


作为旁注,你的if和else if没有做你认为他们做的事情。但是因为这是家庭作业。请仔细看看你的逻辑。

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

double minutesAsDecimal = 0.01 * minutes;
因此,如果分钟数是24,那么你最终会得到0.24。我打赌你会知道从那里开始的方向


作为旁注,你的if和else if没有做你认为他们是做的事情。但是因为这是家庭作业。请仔细看看你的逻辑。

我认为这里的诀窍是使用一点数学。你可以始终做以下事情:

double convertedTimeOut = Math.round(minutes / 15.0) * 0.25 + hours;
然后,您不需要if-else树来计算最近的一刻钟

一刻钟有15分钟,一刻钟是0.25小时。使用上面的公式,你将分钟除以你得到的四分之一小时数(0-4),然后乘以一刻钟的小时数。然后将其加到你得到的小时数上


Math.round
只为您进行取整。

我认为这里的诀窍是使用一些数学知识。您可以始终执行以下操作:

double convertedTimeOut = Math.round(minutes / 15.0) * 0.25 + hours;
然后,您不需要if-else树来计算最近的一刻钟

一刻钟有15分钟,一刻钟是0.25小时。使用上面的公式,你将分钟除以你得到的四分之一小时数(0-4),然后乘以一刻钟的小时数。然后将其加到你得到的小时数上


Math.round
只对您进行取整。

您的条件应该是,而不是,或者:

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

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

您的条件应该是且不是或:

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

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

1分钟是1/60小时,不应该用在什么地方吗?除了你的问题,你可以想想
x
,那不是
x>=8 | | x哇。谢谢大家。我现在知道我在做什么,以及如何得到我需要的结果了。是的,我的逻辑在那里搞砸了。t在我的计划文件中,每个人都没有告诉我这一点,但是哦,好吧。你可以告诉我,我对这一点很陌生。谢谢大家!1分钟是1/60小时,不是应该用在某个地方吗?除了你的问题,你可以想想
x
那不是
x>=8|xWow。谢谢大家。我现在知道我在做什么了,以及如何得到我想要的结果了eed。是的,我的逻辑是混乱的。老师在我的计划文件中没有告诉我这一点,但哦,好吧。你可以看出我对这一点很陌生。谢谢大家!对不起,我以前的评论是针对OP的,不是你。对不起,我以前的评论是针对OP的,不是你。或者如果需要时分格式,那么:
double convertedTimeOut=Math.round(分钟/15.0)*0.15+小时;
或者如果需要hours.minutes格式,则:
double convertedTimeOut=Math.round(分钟/15.0)*0.15+小时;