繁体   English   中英

Java 数量比较

[英]Java Number comparisons

有什么我可以用来查看一个数字是否以与另一个数字相同的数字开头的吗? 前任。 5643 和 5377 都以 5 开头。

有没有办法用数字来做到这一点,还是必须是字符串? (以。。开始?)

Ich n1 和 n2 是您的数字:

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

您将不得不使用 Integer 而不是 int,因为 int 有 no.toString() 方法。

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

甚至更好(Bombe 建议):

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

递归除以十,直到整个除法小于十,然后那个数字是第一个,你可以比较数字。

您可以计算第一个数字:

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

(这仅适用于正数。)

但话又说回来,您可以只比较字符串表示的第一个字符。 字符串比较可能会比较慢,但由于您的问题是“获取字符串表示的第一个字符”,它可能只是合适的解决方案。 :)

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

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));
  public static byte firstDigit(int number) {
    while (true) {
      int temp = number / 10;

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

      number = temp;
    }

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

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

(永远记住,当您谈论数字中的位数时,log10 是您的朋友)

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

对于整数,int n1 和 int n2;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM