如何在java中比较两个可以包含值202.10.200和202.101.30的数字。我理解上面的2不能是“数字”。我们需要比较这一点,记住202.101.30应该大于202.10.200。
答案 0 :(得分:0)
Scanner keyboard = new Scanner(System.in);
String inputLine = keyboard.nextLine();
String[] inputArray = inputLine.split(".");
int[] numArray = null;
for(int i = 0; i < inputArray<length; i++)
{ numArray[i] = Integer.parseInt(inputArray[i]);
}
然后你只需要编写另一个循环来比较另外两个不同数字的输入数组。
答案 1 :(得分:0)
如果您确定字符串在合成上是相同的并且具有由“。”分隔的相同数量的元素,则可以将它们拆分为数组,将数组元素转换为int,然后将它们与onw进行比较:
String s1 = "202.10.200";
String s2 = "202.101.30";
String sGreater = s1;
String[] strArr1 = s1.split("\\.");
String[] strArr2 = s2.split("\\.");
for (int i=0; i<strArr1.length; i++)
{
int x1 = Integer.parseInt(strArr1[i]);
int x2 = Integer.parseInt(strArr2[i]);
if (x2>x1)
{
sGreater = s2;
break;
}
}
答案 2 :(得分:0)
此方法可用作比较器的实现:
public static int compareTo(String s1, String s2) {
String[] a1 = s1.split("\\.");
String[] a2 = s2.split("\\.");
for (int i = 0; i < 3; i++) {
if (!a1[i].equals(a2[i]))
return Integer.parseInt(a1[i]) - Integer.parseInt(a2[i]);
}
return 0;
}
答案 3 :(得分:0)
这个适用于任何(但相等)数量的由点分隔的整数组。
private static int compareDotNums(String str1, String str2) {
if (str1 != null && str2 != null) {
String[] split1 = str1.split("\\.");
String[] split2 = str2.split("\\.");
if (split1.length != split2.length)
throw new IllegalArgumentException("Input length mismatch.");
int result = 0;
for (int i = 0; i < split1.length; i++) {
try {
result = Integer.valueOf(split1[i]).
compareTo(Integer.valueOf(split2[i]));
} catch (NumberFormatException e) {
throw new IllegalArgumentException(
"Illegal input. Not a number.");
}
if (result != 0)
break;
}
return result;
} else
throw new IllegalArgumentException("Non-null input required.");
}
示例输出:
System.out.println(compareDotNums("202.10.200", "202.201.30")); // -1
System.out.println(compareDotNums("202.210.200", "202.201.30")); // 0
System.out.println(compareDotNums("202.201.30", "202.201.30")); // 1
System.out.println(compareDotNums("202.201.30.110", "202.201.30.128")); // -1
System.out.println(compareDotNums("202.201.30.128", "202.201.30.128")); // 0
System.out.println(compareDotNums("202.201.30.210", "202.201.30.128")); // 1