Java:计算字符串中的整数数

Java:计算字符串中的整数数,java,string,integer,digit,Java,String,Integer,Digit,我不太清楚我做错了什么。我试图计算输入字符串中的数字量,但例如,如果数字为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.ch

我不太清楚我做错了什么。我试图计算输入字符串中的数字量,但例如,如果数字为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;
}
公共静态整数计数器整数(字符串输入){
整数计数=0;
对于(int i=0;i

我的问题是我想把它变成一个字符串,因为字符串必须以某种格式输入。

您想分割输入,然后检查每个子字符串是否为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

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

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

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;
}
公共静态整数(字符串输入){
整数计数=0;
布尔值isPreviousDigit=false;
对于(int i=0;i
你说的“把它算作一个输入的数字”是什么意思?“21”不是一个“数字”,而是一个数字。你到底想做什么?如果你想计算一个字符串中的数字(“23 1234 5”=3个数字),那完全是另一个问题。好吧,也许我的想法是错误的。例如,输入的字符串可以是“home,21,car,30,bus,13”,计数应该是3,而此时它是6。很明显,因为我在数数字,你有什么可以给我的指导吗?也许给我指一个正确的方向你想数一数连续的数字组,而不仅仅是字符串中的每一个数字。您需要使用第二个累加器来跟踪最后一个字符是否为数字。例如,如果我有一个输入,其中有“home、21home、car、30bus、13”,那么该输入是否会将答案返回为3?我刚刚输入了它,并试图找出它输出0的原因。我不确定我的代码是否错了。我猜你的意思是你发布的代码输出0?因为我的答案似乎不太清楚为什么你的输入如此不一致,但是添加
.trim()
(参见修订后的答案)会导致
1
。它输出了<代码> 0代码>代码>,因为30中的空格字符导致正则表达式将其视为字符串。谢谢。这正是我想做的我只是把事情复杂化了。