2017-02-14 33 views
0

我正在嘗試打印廣播節目的隨機播放列表。所以它每次循環都會增加分鐘。所以唱片騎師進入一個時間段。例如,一個9分鐘的播放列表。我有下面的數據。順便說一下,我使用冒號前面的第一個數字添加分鐘。如何通過添加分鐘並將其與用戶的分鐘輸入進行比較來打印通過循環的隨機播放列表?

1016,R,Hey Jude,The Beatles,3:00,T1.MP3 
1017,R,Imagine,John Lennon,3:00,T1.MP3 
1023,P,Louie Louie,The Kingsmen,3:00,T1.MP3 
1026,P,What's Going On,Marvin Gaye,53:00,T1.MP3 

它應該只打印前三個。如果是7分鐘,然後打印前兩個,只要它接近時間段。少於5分鐘或更多。我似乎無法找到正確的條件。我輸入內容時不會打印任何內容。我得到的只是一個空白的控制檯。

private void createRandomPlayList() 
{ 
    int randomPickTime = 0; 
    int newMin = 0; 
    String timeSegment = JOptionPane.showInputDialog("Enter the time segment"); 
    int newTimeSegment = Integer.parseInt(timeSegment); 
    Collections.shuffle(radioList); 
    for(Radio radioShows : radioList) 
    { 
     String min = radioShows.getPlayTime().substring(0,2); 
     min = min.replaceAll(":$", ""); 
     newMin = Integer.parseInt(min); 
     randomPickTime += newMin; 
     String minInStr = Integer.toString(newMin); 
     if(newTimeSegment >= randomPickTime)  
     { 
      if(minInStr.equalsIgnoreCase(radioShows.getPlayTime().substring(0,2))) 
      { 
       System.out.println(radioShows); 
      } 
     } 
    } 
} 

回答

0

這似乎有點過於複雜,考慮

String min = radioShows.getPlayTime().split(":")[0]; 
    newMin = Integer.parseInt(min); 
    randomPickTime += newMin; 
    String minInStr = Integer.toString(newMin); 
    if(newTimeSegment >= randomPickTime)  
    { 
     // why is this necessary? 
     // if anything it should compare to **min** 
     // if(minInStr.equalsIgnoreCase(radioShows.getPlayTime().substring(0,2))) 
     { 
      System.out.println(radioShows); 
     } 
    } 
    else {break;} 
+0

謝謝!有效。我只用了第二個if語句,認爲它會再次將其作爲字符串進行比較,而不是使用整數數據類型。 –

1
 if(newTimeSegment >= randomPickTime)  
    { 
     if(minInStr.equalsIgnoreCase(radioShows.getPlayTime().substring(0,2))) 
     { 
      System.out.println(radioShows); 
     } 
    } 

,如果你想只使用代碼的子字符串應該是(0,1)。另外我不認爲這是問題,如果你刪除if語句,我認爲它會工作。

相關問題