如何在 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