【问题标题】:Java split two integers from a string into double (converting time)Java将字符串中的两个整数拆分为双精度(转换时间)
【发布时间】:2013-03-11 01:33:53
【问题描述】:

我对 Java 入门类的部分作业是花一个时间作为字符串输入,并将其转换(同时舍入到最接近的一刻钟)为双精度,并将其存储在一个数组中。我遇到困难的部分是如何处理从 String 类的 split 方法收到的两个整数。如何将两个整数变成一个双精度以在数组中使用? (所以它会像 hours.minutes 或 5.25) 这是我正在开发的一个程序的 sn-p 代码:

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

【问题讨论】:

  • 1 分钟是一小时的 1/60,不应该用在什么地方吗?
  • 除了你的问题,你想想x不是x &gt;= 8 || x&lt;= 22然后看看你的if条件。
  • 哇。谢谢大家。我现在看到了我在做什么以及如何获得我需要的结果。是的,我的逻辑在那里搞砸了。老师在我的计划文件中没有告诉我,但是哦。如您所知,我对此很陌生。谢谢大家!

标签: java string time


【解决方案1】:

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

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

那么你不需要 if-else 树来计算最近的一刻钟。

一刻钟有 15 分钟,一刻钟等于 0.25 小时。使用上面的公式,您将分钟除以您有多少刻钟(0-4),然后乘以刻钟的小时数。然后将其添加到您的工作时间中。

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

【讨论】:

  • 或者如果需要hours.minutes格式,则:double convertedTimeOut = Math.round(minutes / 15.0) * 0.15 + hours;
【解决方案2】:

我猜最让你烦恼的是如何处理会议记录。试试这个:

double minutesAsDecimal = 0.01 * minutes;

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

顺便说一句,你的 if 和 else if 并没有像你想象的那样做。但既然是家庭作业..只要仔细看看你的逻辑。

【讨论】:

  • 对不起,我之前的评论是针对 OP,而不是你。
【解决方案3】:

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

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

等等,或者更好的是,一个简单的语句

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    相关资源
    最近更新 更多