2011-05-09 88 views
0

我需要一種方法,它可以給我任意隨機數的小時數和分鐘數。例如,如果隨機數是500,我希望將信息分爲5小時和0分鐘。另一個示例2359是23小時59分鐘。隨機數是由用戶輸入的,我只關心小時和分鐘(而不是秒)。我甚至不必擔心分鐘的四捨五入。所以我寫了這個方法,我沒有效率。任何人都可以提出一個更好的方法,或者這足夠好嗎?從數字計算日期

private void calculateDateTime(int someNumber){ 

    if(someNumber<=0){ 
     return; 
    } 

    String number = Integer.toString(someNumber); 
    String hrs =""; 
    String mins ="00"; 
    if(number.length()>4){ 
     hrs =number.substring(0, 2); 
     mins = number.substring(2,4); 
    } 
    else{ 
     float f =((float)someNumber)/100; 
     String s = Float.toString(f); 
     String [] splitArray = s.split("\\."); 
     if(splitArray.length>1) { 
     hrs = splitArray[0]; 
     mins = splitArray[1]; 
     } 
    } 
int hr = Integer.valueOf(hrs); 
int min = Integer.valueOf(mins); 
if(hr>=24||min>=60){ 
    return; 
} 

這就是我如何分別得到小時和分鐘。如果你有一個,建議我一個更好的方法。

由於

回答

1

墊輸入字符串用零直至長度爲4,然後灑在中間的字符串?

1

可能:

int hours = someNumber/100; 
int minutes = someNumber % 100; 

if(hours >= 24 || minutes >= 60) { 
    //Do whatever 
} 
+0

如果隨機數大於四位數? – Barry 2011-05-09 21:47:22

+0

超過4位數字意味着超過24小時:10023/100 = 100小時 – 2011-05-09 21:52:57

+0

如果10023應該是一個有效的輸入(0小時23分鐘),只需在開始時添加以下內容:someNumber = someNumber%10000.這將離開4位或更少的數字。 – 2011-05-09 22:22:20

0

如果你想你的價值觀是重複的,我會用在價值傳遞作爲種子到隨機發生器。

Random r = new Random(someNumber); 
int hr = r.nextInt(24); 
int min = r.nextInt(60);