如何在 Java 中檢查字串是否為整數

Rupam Yadav 2023年1月30日 2020年10月15日
  1. 通過 Java 中的 Character.digit() 檢查字串是否為整數
  2. 通過 Java 中的 string.matches(pattern) 檢查字串是否為整數
  3. 通過 Java 中的 Scanner.nextInt(radix) 檢查字串是否為整數
如何在 Java 中檢查字串是否為整數

Java 中的 String 和 Integer 經常用於儲存資料,但有時我們可能要檢查一種資料型別是否包含與另一種資料型別相容的元素。

我們知道一個字串可以包含字母、符號和數字,因此確定我們的字串所包含的資料型別是很有用的。我們將看到用不同方法檢查字串的例子。

通過 Java 中的 Character.digit() 檢查字串是否為整數

我們可以看到,下面的例子中有三個字串,我們可以把它們傳入函式 isStringInteger(stringToCheck, radix) 中。radix 告訴我們想要得到的數字的範圍,這裡我們使用的是 10,允許的範圍是 0 到 9。

Character.digit() 檢查字串中的每個字元,如果是數字,則返回一個大於 0 的數字。還可以新增其他條件語句以使結果準確。

public class Main {
    public static void main(String[] args) {
        String str1 = "ABC123";
        String str2 = "3030";
        String str3 = "-9";

        boolean integerOrNot1 = isStringInteger(str1, 10);
        System.out.println("Is "+str1+" an Integer? -> "+integerOrNot1);

        boolean integerOrNot2 = isStringInteger(str2, 10);
        System.out.println("Is "+str2+" an Integer? -> "+integerOrNot2);

        boolean integerOrNot3 = isStringInteger(str3, 10);
        System.out.println("Is "+str3+" an Integer? -> "+integerOrNot3);
    }

    public static boolean isStringInteger(String stringToCheck, int radix) {
        if(stringToCheck.isEmpty()) return false;           //Check if the string is empty
        for(int i = 0; i < stringToCheck.length(); i++) {
            if(i == 0 && stringToCheck.charAt(i) == '-') {     //Check for negative Integers
                if(stringToCheck.length() == 1) return false;
                else continue;
            }
            if(Character.digit(stringToCheck.charAt(i),radix) < 0) return false;
        }
        return true;
    }
}

輸出:

Is 12000003 an Integer? -> true

通過 Java 中的 string.matches(pattern) 檢查字串是否為整數

在下一個識別字串是否包含整數元素的方法中,我們可以使用正規表示式,它可以幫助匹配一個特定的模式,即數值。-?\\d+ 就是我們可以對字串進行匹配的表示式,並得到布林型別的結果。

public class Main {
    public static void main(String[] args) {

        String str1 = "ABC123";
        String str2 = "123";
        String str3 = "000000009";

        boolean integerOrNot1 = str1.matches("-?\\d+");
        System.out.println("Is "+str1+" an Integer? -> "+integerOrNot1);

        boolean integerOrNot2 = str2.matches("-?\\d+");
        System.out.println("Is "+str2+" an Integer? -> "+integerOrNot2);

        boolean integerOrNot3 = str3.matches("-?\\d+");;
        System.out.println("Is "+str3+" an Integer? -> "+integerOrNot3);
    }
}

輸出:

Is ABC123 an Integer? -> false
Is 123 an Integer? -> true
Is 000000009 an Integer? -> true

通過 Java 中的 Scanner.nextInt(radix) 檢查字串是否為整數

我們還可以使用 Java 中著名的 Scanner() 類。它的 nextInt() 方法可以檢查給定的字串是否為 Int 型別。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
      
        String str1 = "ABC123";
        String str2 = "3030";
        String str3 = "000000009";

        System.out.println("Is "+str1+" an Integer? -> "+isStringInteger(str1, 10));
        System.out.println("Is "+str2+" an Integer? -> "+isStringInteger(str2, 10));
        System.out.println("Is "+str3+" an Integer? -> "+isStringInteger(str3, 10));
    }

    public static boolean isStringInteger(String stringToCheck, int radix) {
        Scanner sc = new Scanner(stringToCheck.trim());
        if(!sc.hasNextInt(radix)) return false;
        sc.nextInt(radix);
        return !sc.hasNext();
    }

輸出:

Is ABC123 an Integer? -> false
Is 3030 an Integer? -> true
Is 000000009 an Integer? -> true
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相關文章 - Java String

相關文章 - Java Int