Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较编号:202.10.200和202.201.30_Java_Compare - Fatal编程技术网

Java 比较编号:202.10.200和202.201.30

Java 比较编号:202.10.200和202.201.30,java,compare,Java,Compare,如何比较java中值为202.10.200和202.101.30的两个数字。我理解上述2项不能是“数字”。我们需要对此进行比较,记住202.101.30应该大于202.10.200。扫描仪键盘=新扫描仪(System.in); Scanner keyboard = new Scanner(System.in); String inputLine = keyboard.nextLine(); String[] inputArray = inputLine.split("."); int[] num

如何比较java中值为202.10.200和202.101.30的两个数字。我理解上述2项不能是“数字”。我们需要对此进行比较,记住202.101.30应该大于202.10.200。

扫描仪键盘=新扫描仪(System.in);
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]);
}
字符串inputLine=keyboard.nextLine(); 字符串[]inputArray=inputLine.split(“.”); int[]numaray=null;
对于(int i=0;i
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;
  }
}
String s1=“202.10.200”;
字符串s2=“202.101.30”;
字符串sGreater=s1;
字符串[]strArr1=s1.split(“\\”);
字符串[]strArr2=s2.split(“\\”);
对于(int i=0;ix1)
{
sGreater=s2;
打破
}
}

此方法可用作比较器的实现:

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;
}
public static int compareTo(字符串s1、字符串s2){
字符串[]a1=s1.split(\\);
字符串[]a2=s2.split(“\\”);
对于(int i=0;i<3;i++){
如果(!a1[i]。等于(a2[i]))
返回Integer.parseInt(a1[i])-Integer.parseInt(a2[i]);
}
返回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.");
}

字符串拆分和整数解析是您的关键。如果它们不是数字,那么就不要称它们为数字。如果您确切地说明了您想要的顺序,这可能也会有所帮助。(请注意,您似乎在比较IP地址或其他内容)是否使用从左到右的部分来比较这些部分,就像它们是整数一样?
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