我正在开发一个小程序来比较服务级别,用户将输入服务级别2次(当前和请求),然后输入将被扫描并进行比较并显示消息。
例如:
current = 9*5 NBD (a)
requested = 24*7 SBD (b)
我想知道在Java中如何告诉编译器(b)大于(a) 因为我想使用像这样的if语句
if (b > a) then show message.
我尝试使用string.equals,但并没有太多帮助我。 我没有成功将字符串转换为数字来进行这样的比较。
答案 0 :(得分:2)
尝试以下声明
if(a.compareTo(b) > 0);
首先:你不能覆盖String.compareTo(),因为它是最终的。您可以使用String field
创建类,并为此类编写compareTo()
。这不是最好的主意。
但您可以通过将两个字符串放入数组并在Comparator
方法中创建sort()
接口的实现来比较两个字符串。
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;
}
});
答案 1 :(得分: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
}
答案 2 :(得分: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你很多