0

现在,我有一个字符串 String time= "200hour 0minute 0second" 我想跟踪字符串中的数字并转换为秒..如上字符串..我想得到值 200*3600.. 我的代码:

    //change from hour minute to second
public String changeSecond(String time)
{
    String result;
    int ind_hour=time.indexOf("hour");
    int ind_minute=time.indexOf("minute");
    int ind_second=time.indexOf("second");

    int hour=Integer.parseInt(time.substring(0, ind_hour));
    int minute=Integer.parseInt(time.substring(ind_hour+1, ind_minute));;
    int second=Integer.parseInt(time.substring(ind_minute+1, ind_second));

    result=String.valueOf(hour*3600+minute*60+second);

    return result;
}

但是当我运行changeSecond(时间)时。它不起作用..我该怎么做。

4

7 回答 7

1
public String changeSecond(String time)
{
    String result;
int ind_hour=time.indexOf("hour");
int ind_minute=time.indexOf("minute");
int ind_second=time.indexOf("second");

int hour=Integer.parseInt(time.substring(0, ind_hour));
int minute=Integer.parseInt(time.substring(ind_hour+6, ind_minute));; // value 6 is length of minute 
int second=Integer.parseInt(time.substring(ind_minute+6, ind_second));

  int totalsec=((hour*60*60)+(minute*60)+second);
   result=String.valueOf(totalsec);

return result;

}

于 2013-05-20T09:06:16.310 回答
0

它不是这样做的方法。但它会起作用。试试这个,

String hour="200hour 0minute 0second";

     String[] secondarray=hour.split("hour");

     String second=secondarray[0]; //here "second" will have the value 200
于 2013-05-20T09:03:14.570 回答
0

将您的小时、分钟和秒解析更新为:

        int hour=Integer.parseInt(time.substring(0, ind_hour));
        int minute=Integer.parseInt(time.substring(ind_hour + "hour".length() + 1, ind_minute));
        int second=Integer.parseInt(time.substring(ind_minute + "minute".length() + 1, ind_second));
于 2013-05-20T09:10:45.293 回答
0

您可以将选项卡分成 3 个部分:一个包含小时,另一个包含分钟,最后一个包含秒。

public static String changeSecond(String time)
    {
        String tab[] = time.split(" ");
        String result = "";
        int ind_hour=tab[0].indexOf("hour");
        int ind_minute=tab[1].indexOf("minute");
        int ind_second=tab[2].indexOf("second");

        int hour=Integer.parseInt(tab[0].substring(0, ind_hour));
        int minute=Integer.parseInt(tab[1].substring(0, ind_minute));
        int second=Integer.parseInt(tab[2].substring(0, ind_second));

        result=String.valueOf(hour*3600+minute*60+second);

        return result;
    }
于 2013-05-20T09:06:30.910 回答
0

您应该对以下几行进行更改:

int hour=Integer.parseInt(time.substring(0, ind_hour));
int minute=Integer.parseInt(time.substring(ind_hour+5, ind_minute));
int second=Integer.parseInt(time.substring(ind_minute+7, ind_second));
于 2013-05-20T09:06:46.550 回答
0

这是我能想到的最干净的解决方案。只需拆分“”,然后删除不相关的文本。

public String changeSecond(final String time)
{
    final String[] times = time.split(" ");
    final int hour = Integer.parseInt(times[0].replace("hour", ""));
    final int minute = Integer.parseInt(times[1].replace("minute", ""));
    final int second = Integer.parseInt(times[2].replace("second", ""));
    return String.valueOf(hour*3600+minute*60+second);
}
于 2013-05-20T09:07:36.987 回答
0

由于将字母字符传递给该Integer.parseInt方法,因此初始代码引发了解析错误。包含字母字符是因为子字符串没有考虑术语小时、分钟和秒的长度。我建议拆分字符串以整理内容。

public String changeSecond(String time) {
    String[] tokens = time.split(" ");
    tokens[0] = tokens[0].substring(0, tokens[0].indexOf("hour"));
    tokens[1] = tokens[1].substring(0, tokens[1].indexOf("minute"));
    tokens[2] = tokens[2].substring(0, tokens[2].indexOf("second"));

    return String.valueOf(Integer.parseInt(tokens[0]) * 3600
            + Integer.parseInt(tokens[1]) * 60 + Integer.parseInt(tokens[2]));
}
于 2013-05-20T09:07:47.030 回答