当前位置: 首页 > 面试题库 >

确定字符串在Java中是否为整数

方风华
2023-03-14
问题内容

我正在尝试确定字符串数组中的特定项目是否为整数。

我是形式上.split(" ")'ing的中缀表达式String,然后尝试将结果数组拆分为两个数组;一个用于整数,一个用于运算符,同时丢弃括号和其他杂项。做到这一点的最佳方法是什么?

我以为我也许可以找到一种Integer.isInteger(String arg)方法或某种方法,但是没有运气。


问题答案:

最幼稚的方式是遍历String并确保所有元素对于给定的基数都是有效数字。由于你必须至少查看一次每个元素,因此这将尽可能地提高效率。我想我们可以基于基数对其进行微优化,但是就所有意图和目的而言,这都是你所期望的那样好。

public static boolean isInteger(String s) {
    return isInteger(s,10);
}

public static boolean isInteger(String s, int radix) {
    if(s.isEmpty()) return false;
    for(int i = 0; i < s.length(); i++) {
        if(i == 0 && s.charAt(i) == '-') {
            if(s.length() == 1) return false;
            else continue;
        }
        if(Character.digit(s.charAt(i),radix) < 0) return false;
    }
    return true;
}

另外,你可以依靠Java库来实现。它不是基于异常的,并且将捕获几乎所有你能想到的错误条件。它会贵一些(你必须创建一个Scanner对象,该对象在严格的紧缩循环中是你不希望做的。但是通常情况下,它不应该太贵,所以每天操作它应该是相当可靠的。

public static boolean isInteger(String s, int radix) {
    Scanner sc = new Scanner(s.trim());
    if(!sc.hasNextInt(radix)) return false;
    // we know it starts with a valid int, now make sure
    // there's nothing left!
    sc.nextInt(radix);
    return !sc.hasNext();
}

如果最佳实践对你来说并不重要,或者你想招揽进行代码审查的人员,请尝试以下操作以获取大小:

public static boolean isInteger(String s) {
    try { 
        Integer.parseInt(s); 
    } catch(NumberFormatException e) { 
        return false; 
    } catch(NullPointerException e) {
        return false;
    }
    // only got here if we didn't return false
    return true;
}


 类似资料:
  • 问题内容: 假设您有一个要测试的字符串,以确保在继续其他代码之前,该字符串包含整数。在Java中,您将使用什么来确定它是否为整数? 问题答案: 如果要确保它 只是 一个整数并将其转换为一个整数,则可以在中使用parseInt。但是,如果要检查字符串是否包含数字,则最好将String.matches与正则表达式配合使用:

  • 问题内容: 我知道这个问题的变体以前经常被问过,但这 并不是 这些问题的 精确 重复。 我想检查a 是否为数字,如果是,我想将其存储为。有几种方法可以做到这一点,但是所有这些方法似乎都不适合我的目的。 一种解决方案是使用或类似方法。但是,如果存在逗号,这些解决方案将不起作用(因此,“ 1,234”将导致异常)。在使用这些技术之前,我当然可以删除所有逗号,但是这似乎在其他地区带来了很多问题。 我看了

  • 问题内容: 我有一个子字符串: 我还有另一个字符串: 如何查找是否是使用Python的子集? 问题答案: 用::

  • 问题内容: 我编写了两个简单的函数来确定字符串是否是回文。我以为它们是等效的,但是2不起作用。为什么是这样? 1个 2 问题答案: 不会创建字符串,而是创建“反向”对象: 因此,字符串不等于object 。为了使它起作用,您需要确保实际评估了该对象: 所述插入件在每个字符串中的字符,并且这导致反转串之间正在变成一个字符串对象。

  • 问题内容: 我需要能够使用Java中的字符串,并确定其中包含的所有字符是否都在指定的字符集中(例如ISO-8859-1)。我已经到处寻找了一种简单的方法(包括使用来玩),但是还没有找到任何东西。 取得字符串并确定所有字符是否都在给定字符集中的最佳方法是什么? 问题答案: 类CharsetEncoder在包java.nio.charset中提供的方法canEncode是否支持一个特定的字符来测试。

  • 问题内容: 在Java中,有没有一种方法可以确定字符串的第一个字符是否为数字? 一种方法是 并一直执行到9点,但这似乎效率很低。 问题答案: 请注意,这将允许使用 任何 Unicode数字 ,而不仅仅是0-9。您可能更喜欢: 或较慢的正则表达式解决方案: 但是,使用这些方法中的任何一种,必须首先确保该字符串不为空。如果是,而且将引发。没有这个问题。 要使整个条件只占一行,并避免长度检查,可以将正则