Java编号比较

时间:2009-03-16 18:04:37

标签: java startswith

我可以使用一些东西来查看一个数字是否与另一个数字相同? 防爆。 5643和5377都以5开头。

有没有办法用数字做这个或者它们必须是字符串? (startsWith?)

7 个答案:

答案 0 :(得分:7)

Ich n1和n2是你的数字:

return (n1.toString().charAt(0) == n2.toString().charAt(0));

你必须使用Integer而不是int,因为int没有.toString()方法。

如果n1是一个int,你可以使用new Integer(n1).toString()。

甚至更好(Bombe建议):

String.valueOf(n1).charAt(0) == String.valueOf(n2).charAt(0)

答案 1 :(得分:1)

递减除以10直到整个除法小于10,然后该数字是第一个,你可以比较数字。

答案 2 :(得分:1)

您可以计算第一个数字:

public int getFirstDigit(int number) {
    while (number >= 10) {
        number /= 10;
    }
    return number;
}

(这只适用于正数。)

但是你可以再次比较字符串表示的第一个字符。字符串比较可能较慢,但由于您的问题是“获取字符串表示的第一个字符”,它可能只是适当的解决方案。 :)

答案 3 :(得分:1)

最直接的方法(允许不同的长度值)可能就像你说的那样,将它们转换为字符串。

int x = 5643;
int y = 5377;
String sx, sy;

sx = "" + x;        // Converts int 5643 to String "5643"
sy = "" + y;

boolean match = (sx.charAt(0) == sy.charAt(0));

答案 4 :(得分:1)

  public static byte firstDigit(int number) {
    while (true) {
      int temp = number / 10;

      if (temp == 0) {
        return (byte) Math.abs(number);
      }

      number = temp;
    }

答案 5 :(得分:1)

(int)(a / 10 **(int)Math.log10(a))

可能效率低于字符串解决方案,但没有循环,它使我们保持在“数字”领域。

(永远记住,当你在谈论一个数字中的位数时,log10就是你的朋友)

也不适用于负数 - 取第一个绝对值。

答案 6 :(得分:-1)

对于int,int n1和int n2;

return ("" + n1).charAt(0) == ("" + n2).charAt(0);