2015-12-27 54 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 
}