2014-01-14 3 views
0

У меня есть день, секунды, часы. Я хочу получить значение minimum, но не zero среди этих переменных. Как я могу это получить? Я могу получить минимальное значение, если эти переменные являются целыми.Получение минимального значения, но более 0

long time = 1387670712 * (long) 1000; 
    Date past = new Date(time); 
    Date now = new Date(); 

    String day = TimeUnit.MILLISECONDS.toDays(now.getTime() - past.getTime()) + " days ago"; 
    String sec = TimeUnit.MILLISECONDS.toMinutes(now.getTime() - past.getTime()) + "minutes ago"; 
    String hours = TimeUnit.MILLISECONDS.toHours(now.getTime() - past.getTime()) + " hours ago"; 
+0

рода и получить самые маленькие! – Rugal

+0

или просто сравнить их .... получить самый маленький! – Rugal

+0

значение + "Строка". Как я могу их отсортировать? –

ответ

0

Кажется, что вам нужно что-то вроде следующего:

public static void main(String args[]) { 
    long time = 1387670712 * (long) 1000; 
    Date past = new Date(time); 
    Date now = new Date(); 

    long i1 = TimeUnit.MILLISECONDS.toDays(now.getTime() - past.getTime()); 
    long i2 = TimeUnit.MILLISECONDS.toMinutes(now.getTime() - past.getTime()); 
    long i3 = TimeUnit.MILLISECONDS.toHours(now.getTime() - past.getTime()); 
    String day = i1+" days ago"; 
    String sec = i2+" minutes ago"; 
    String hours = i3 +" hours ago"; 
    long[] values = new long[] {i1,i2,i3}; 
    Arrays.sort(values); 
    for(int i = 0 ;i<values.length;i++){ 
     if(values[i] != 0){ 
      String postfix = values[i] == i1 ? day : (values[i] == i2 ? sec : hours); 
      System.out.println("minimum = " + postfix); 
      System.exit(0); 
     } 
    } 
    System.out.println("no values or all 0"); 
} 
+0

Спасибо. Не могли бы вы описать эту строку String postfix = values ​​[i] == i1? день: (значения [i] == i2? sec: часы); –

+0

Это тернарный оператор (альтернатива для if-then-else). – alex2410

Смежные вопросы