Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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数字比较_Java_Startswith - Fatal编程技术网

Java数字比较

Java数字比较,java,startswith,Java,Startswith,有什么东西我可以用来看看一个数字是否以同一个数字开头? 例5643和5377都以五开头 有没有办法用数字来实现这一点,或者它们必须是字符串?(开始?Ich n1和n2是您的号码: return (n1.toString().charAt(0) == n2.toString().charAt(0)); 您必须使用Integer而不是int,因为int没有.toString()方法 如果n1是整数,则可以使用新的整数(n1).toString() 或者更好(Bombe建议): 递归除以10,直到整

有什么东西我可以用来看看一个数字是否以同一个数字开头? 例5643和5377都以五开头


有没有办法用数字来实现这一点,或者它们必须是字符串?(开始?

Ich n1和n2是您的号码:

return (n1.toString().charAt(0) == n2.toString().charAt(0));
您必须使用Integer而不是int,因为int没有.toString()方法

如果n1是整数,则可以使用新的整数(n1).toString()

或者更好(Bombe建议):


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

您可以计算第一个数字:

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));
(内部)(a/10**(内部)数学日志10(a))

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

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


对于负数也不起作用,取第一个绝对值。

对于int,int n1和int n2

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

你想说“56”和“5213456”以相同的数字开头,还是不想?你是想出于某种抽象的原因避免使用字符串,还是有真正的理由避免使用字符串?50和“-5”以相同的数字开头?我认为你不能在Java中使用sx。[0]。这对我来说就像是一个C语言。保罗:谢谢,我最近一直写很多C++。如果有评论的话,否决票会更有效。我没有否决票,但现在我只想说“很多”。:P@mmyers:噢!我只是浪费了很多时间来浏览我的答案,寻找“很多”这个词。我想我也需要拼写检查我的评论。:)您还可以使用“String.valueOf(n1).charAt(0)=String.valueOf(n2).charAt(0)”。这样你就可以使用任何你想要的积分类型。它甚至对双打有效。可能是这样,但负面的结果是什么呢?“”+n1是将int n1转换为字符串的方法之一,它可以工作。我认为否决票是对错误或无用的答案的。我的答案也不是错的。否决票可能会误导其他人认为“+n1”根本不起作用。
  public static byte firstDigit(int number) {
    while (true) {
      int temp = number / 10;

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

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