【发布时间】:2016-09-22 20:54:51
【问题描述】:
我正在编写获取 2 个字符串的函数。 每个字符串都代表某事的版本。
例如:
字符串 var1 = "1.1.1";
字符串 var2 = "1.1.2";
并返回哪个字符串是较新的版本。
我的代码:
public void main(String var1, String var2) {
String[] arrayA = var1.split("\\.");
String[] arrayB = var2.split("\\.");
for (int i = 0; i < arrayA.length; i++) {
Integer number1 = Integer.parseInt(arrayA[i]);
Integer number2 = Integer.parseInt(arrayB[i]);
if (number1.equals(number2)) {
textView.setText("arrays equal");
} else if (number1 > number2) {
textView.setText("array A newer version");
break;
} else if (number2 > number1) {
textView.setText("array B newer version");
break;
}
}
到目前为止一切正常。
当数组长度不同时,我的问题就开始了
(我总是将更短的数组转换为更长的数组)
如果我露营 var1 = "2.3";到 var2="3.3.3";我得到了正确的答案。
但如果我露营 var1 = "2.3";到 var2 = "2.3.1";
我总是得到“平等”。
有什么建议可以解决吗?
【问题讨论】:
-
您的代码中有错别字,请先修正。 (示例 -> 字符串 var2 = "1.1.2)
-
首先,您的退出条件应该检查两个数组的长度。如果到循环结束时您还没有确定哪个更新,并且它们的长度不同,则较长的版本更新。
标签: java arrays exception exception-handling indexoutofboundsexception