-1

如何比较 java 中可以具有值 202.10.200 和 202.101.30 的 2 个数字。我了解以上 2 不能是“数字”。我们需要比较这个,记住 202.101.30 应该大于 202.10.200。

4

4 回答 4

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]);
}

然后你只需要编写另一个循环来比较另外两个不同数字的输入数组。

于 2013-07-17T06:52:45.913 回答
0

如果您确定字符串在语法上相同并且具有相同数量的由“。”分隔的元素,则可以将它们拆分为数组,将数组元素转换为 int,然后将它们逐个比较:

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;
  }
}
于 2013-07-17T06:58:19.293 回答
0

此方法可以用作 Comparator 的实现:

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;
}
于 2013-07-17T07:01:20.243 回答
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
于 2013-07-17T07:10:40.393 回答