Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数字编码bat_Java - Fatal编程技术网

Java 数字编码bat

Java 数字编码bat,java,Java,我在工作 我已经看到了上一个问题中列出的解决方案。我已经编码了 if (str.length() == 0) { return 0; } int sum = 0; int start = 0; int stop = 0; for (int i = 0; i < str.length(); i++) { if (Character.isDigit(str.charAt(i))) { start = i; for (int j = i + 1;

我在工作

我已经看到了上一个问题中列出的解决方案。我已经编码了

if (str.length() == 0) {
    return 0;
}
int sum = 0;
int start = 0;
int stop = 0;
for (int i = 0; i < str.length(); i++) {
    if (Character.isDigit(str.charAt(i))) {
        start = i;
        for (int j = i + 1; j < str.length(); j++) {
            if (!Character.isDigit(str.charAt(j))) {
                stop = j;
                j = j + str.length();
            }
        }
        sum += Integer.parseInt(str.substring(start, stop));
    }
}
return sum;
if(str.length()==0){
返回0;
}
整数和=0;
int start=0;
int stop=0;
对于(int i=0;i

我认为这是一种在字符串中查找数字开头和结尾的简单方法。当我在codingbat上运行此命令时,我得到了
“5hoco1a1e”
“5$$1;;1!!”
以及
“Chocolate”
返回0的正确和(7),这是正常的。在测试时,我将
返回
更改为
返回开始
我得到一个5作为字符串
“abc123xyz”
(它应该是123)的结果。当我找到字符串中的第一个数字时,我所做的(我想)就是设置
I
开始。关于如何使用此代码有什么想法吗?我真的不是在寻找答案,而是希望有人告诉我我误入歧途的地方。

在嵌套for循环完成后,
I
仍然与循环开始前相同。要解决此问题,请在结束嵌套循环之前设置
i=j

if (!Character.isDigit(str.charAt(j))){
    stop = j;
    i = j;
    j = j+ str.length();
}

第一个缺陷是
i
仅在内部循环完成后移动到下一个字符。当
i
需要移动到内环停止的位置时(
i=j
i=stop
)。单凭这一点并不能解决所有问题


下一个缺陷是,如果
字符串
以数字结尾(即
“5hoco1a1e123”
),代码将抛出错误。当代码达到最后一个值时,它将为
start
分配一个新值,但
stop
将不会获得新值。这将导致
sum+=Integer.parseInt(str.substring(start,stop))stop
小于
start

之后存在另一个问题,因此code>将出错。如果(str.length()==0)返回0;整数和=0;int start=0;int stop=0;对于(int i=0;i=5时的离子值“aa11b33”,j应首先等于i+1(6)。当我注释掉“sum”行(//sum+=…)并返回stop时,返回4