2015-12-27 95 views
2

我正在一個小程序來比較服務水平,用戶將輸入服務水平2倍(當前和要求),然後輸入將被掃描和比較和顯示一條消息。How to say字符串A>字符串B在Java

例如:

current = 9*5 NBD (a) 
requested = 24*7 SBD (b) 

我想知道如何在Java中,我可以告訴編譯器(B)比(一) 更大,因爲我想,如果語句中使用這樣

if (b > a) then show message. 

我試過使用string.equals,但沒有太多幫助。 我沒有成功將字符串轉換爲數字來做這種比較。

+7

如果(b.compareTo(一)> 0)的System.out.println( 「信息」)的一部分; – markspace

+1

你想申請這些消息的邏輯是什麼?換句話說,你想使用哪一部分字符串以及你想如何使用它們? – Pshemo

+0

嗨Pshemo,我需要使用完整的字符串,NBD是重要的和相同的9 * 5 也NBD總是低於SBD,並且24 * 7高於9 * 5我想比較顯示消息到用戶如果他有9 * 5 NBD並且想要24 * 7 SBD那麼(請購買升級) 對我來說問題是不僅有9 * 5 NBD,還有11 * 5,18 * 6和24 * 7並且每個人都有NBD和SBD –

回答

0

謝謝大家的願意幫助:) 很多的思考後,我發現另一種方式,也幫了我很多 我創建了2點新的整數,並呼籲他們價值觀我需要的東西。 並使用if語句,如果輸入的是9 * 5 NBD,則值將爲零,如果是SBD,則該值爲1等等,然後創建新的if語句以比較值並顯示給我一個如果A大於B,那麼這個消息確實有效。 這裏是我的代碼

String WA_SLA = "", REQ_SLA = ""; 
int Va_WA_SLA = 0, Va_REQ_SLA = 0; 
    if(WA_SLA.equalsIgnoreCase("9*5 SBD")) 
    { 
     Va_WA_SLA = 1; 
    } 
    if(REQ_SLA.equalsIgnoreCase("9*5 NBD")) 
    { 
     Va_REQ_SLA = 0; 
    } 
     if(Va_WA_SLA > Va_REQ_SLA) 
    { 
     JOptionPane.showMessageDialog(frame,"Warranty SLA is Higher than Requested SLA " ,null, JOptionPane.INFORMATION_MESSAGE); 
    } 

Thaaaaaaaaaaaaank你很多

2

嘗試下面的語句 if(a.compareTo(b) > 0);

第一件事:你不能覆蓋String.compareTo(),因爲它是最後的。你可以創建String field的課程,併爲該課程編寫compareTo()。這不是最好的想法。

但是你可以通過將兩個字符串放入數組並在sort()方法中創建Comparator接口的實現來比較兩個字符串。

String current = "9*5 NBD"; 
    String requested = "24*7 SBD"; 

    String[] test = {current, requested}; 
    Arrays.sort(test, new Comparator<String>() { 
     @Override 
     public int compare(String o1, String o2) { 
      //Your impl goes here 
      return 0; 
     } 
    }); 
0

在哪裏這些字符串從何而來?當然,他們必須來自某種包含服務級別詳細信息以及訂閱該服務級別成本的表格。你想要檢查的是,所需的服務級別的成本是否高於客戶已有的服務級別。假設服務級別細節來自Map<ServiceLevel, BigDecimal>,它給出了某個服務級別的成本。然後,所有你需要做的是:

BigDecimal costOfCurrentSL = serviceLevelCosts.get(currentSL); 
BigDecimal costOfRequiredSL = serviceLevelCosts.get(requiredSL); 
if (costOfRequiredSL.compareTo(costOfCurrentSL) > 0) { 
    // ... tell client he needs to purchase a top-up 
}