簡體   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