2016-11-17 125 views
-1

我在一個字符串中獲得了系統時間,例如「1240」。 然後我想做一些事情,如系統時間是<比1240,然後關閉應用程序。 但它給了我「操作員'<'不能應用於java.lang.String!」錯誤!運算符'<'不能應用於'java.lang.String'

我的代碼是:

  runOnUiThread(new Runnable() { 
      public void run() { 
       try{ 
        TextView txtCurrentTime= (TextView)findViewById(R.id.showtime); 
        Date dt = new Date(); 
        int hours = dt.getHours(); 
        int minutes = dt.getMinutes(); 
        int mynum = 1240; 
        String curTime = hours + "" + minutes; 
        txtCurrentTime.setText(curTime); 
        if(curTime < mynum){ 
         System.exit(0); 
        } 
       }catch (Exception e) {} 
      } 
     }); 

什麼問題?

+2

是 「你好」< 「世界」 是真的嗎?或假? –

+0

運算符'<'不能應用於java.lang.String!這就是問題 –

+2

注意錯誤測試:運算符'<'不能應用於java.lang.String「,這意味着'<'運算符不能應用於java.lang.String類型的對象 這是Java,而不是clownlanguage。 考慮瀏覽到https://docs.oracle.com/javase/tutorial/並閱讀「學習Java語言」 – DwB

回答

1

<沒有爲字符串和int定義。所以你不能使用它。

當前的時間可以計算如下:

int curTime = 100*hours + minutes; 

那麼你可以使用整數<兩者之間。

我相信雖然你必須使用更平常的系統毫秒。

+0

不能使用系統毫秒,除非你想自己做時區補償 – Andreas

0
if(hours * 100 + minutes < mynum){ 
    System.exit(0); 
} 
1

嘗試{

SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); 
String str1 = String.valueOf(hours1) + ":" + String.valueOf(minutes1) + ":" + "00"; 
String str2 = String.valueOf(hours2) + ":" + String.valueOf(minutes2) + ":" + "00"; 
Date date1 = formatter.parse(str1); 
Date date2 = formatter.parse(str2); 

if (date1.compareTo(date2)<0) 
    { 
    //  if date2 > date1     
    } 

}catch (ParseException e1){ 
    e1.printStackTrace(); 
} 

formats for dates

檢查日期/時間格式,按您的要求從這裏

+0

當OP試圖比較「1620」<1240「,即小時和分鐘,而不是日/月/年嗎? – Andreas

+0

創建通過在「H:mm」格式中添加小時和分鐘的字符串,然後使用simpledateformat將其解析爲日期並進行比較。我提供了Pattern su通過簡單日期格式推薦 – Bali

+0

如果針對問題量身定製答案,而不僅僅是一個樣板答案,答案就更有用。在這種情況下,這意味着將代碼格式設爲小時和分鐘,而不是日/月/年,因爲問題不是日期,而是時間。這個答案甚至是一個糟糕的樣板答案,最後是那個愚蠢的「catch」子句,因爲傾銷堆棧跟蹤並繼續執行,就好像沒有什麼不好是一個非常糟糕的例子。 – Andreas

相關問題