【问题标题】:Java: Count the number of integers in a stringJava:计算字符串中的整数个数
【发布时间】:2016-10-03 00:32:52
【问题描述】:

我不能完全弄清楚我做错了什么。我正在尝试计算输入字符串中的数字数量,但例如,如果数字是 21,我想将其计为字符串中的 1 个输入数字。

到目前为止,我有以下内容,但我不知道如何将其计为 1 个整数而不是 2。

public static int countIntegers(String input) { 
    int count = 0;
    for (int i = 0; i < input.length(); i++) {
        if (Character.isDigit(input.charAt(i))) {
            count++;
        }
    }
    return count;
}

我的问题是我想要一个字符串,因为字符串必须输入某种格式。

【问题讨论】:

  • 你是什么意思“算作一个输入的数字”? “21”不是“数字”,而是一个数字。你究竟想做什么?如果您想计算字符串中的数字(“23 1234 5”= 3 个数字),那就完全是另外一个问题了。
  • 好吧,也许我想错了。例如,输入的字符串可能是“home,21,car,30,bus,13”,计数应该是 3,而现在是 6。显然是因为我在数数字
  • 你有什么可以给我的指导吗?也许指出我正确的方向
  • 您想要计算连续数字组,而不仅仅是字符串中的每个数字。如果最后一个字符是数字,则需要使用第二个累加器来跟踪。

标签: java string integer digit


【解决方案1】:

基本上,一个数字 - 一个连续的数字序列。
因此,该算法的思想是计算此类序列的数量。

我想提出以下算法的实现:

public static int countIntegers(String input) {
    int count = 0;
    boolean isPreviousDigit = false;

    for (int i = 0; i < input.length(); i++) {
        if (Character.isDigit(input.charAt(i))) {
            if (!isPreviousDigit) {
                count++;
                isPreviousDigit = true;
            }
        } else {
            isPreviousDigit = false;
        }
    }
    return count;
}

【讨论】:

  • 谢谢。这正是我想要做的,当我试图做的时候,我只是把它复杂化了。
  • 这不适用于“this 1 is not recognized”
  • @PrasannaBableshwar,你能详细说明一下吗?对于"this 1 is not recognised" 输入字符串,该方法返回1
  • 对不起我的错!我想我对括号感到困惑
【解决方案2】:

您想拆分输入,然后检查每个子字符串是否为 int。

public static int countIntegers(String input) {
    String[] parsed = input.split(","); // , is the delimiter
    int count = 0;
    for (String s : parsed) {
        if (s.trim().matches("^-?\\d+$")) { // A slow regex method, but quick and dirty
            count++;
        }
    }

    return count;
}

示例输入:home,21,car,30,bus,13

输出:3

【讨论】:

  • 举例来说,如果我有一个输入为“home,21home, car,30bus, 13”,那会返回 3 的答案吗?
  • 我刚刚输入它并试图找出它输出 0 的原因。不确定我的代码是否错误。我想你的意思是你发布的代码输出 0?因为我的似乎
  • 我对您的输入为何如此不一致感到困惑,但添加.trim()(请参阅修订后的答案)会导致1。它之前输出了0,因为 `30` 中的空格字符导致正则表达式将其视为字符串。
猜你喜欢
  • 2016-08-13
  • 2015-03-14
  • 2014-07-04
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
相关资源
最近更新 更多