Java Can';t解密字母后跟其频率的字符串

Java Can';t解密字母后跟其频率的字符串,java,string,Java,String,对于具有字符和字符出现次数的给定字符串,解码为完整字符串。在编码过程中,如果该字符只出现一次,则该字符旁边将没有数字 输入:“a5br3” 输出:“AAAA BRRR” 我得到的输出是: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 我的逻辑正确吗?我的代码有什么问题 public String func (String st

对于具有字符和字符出现次数的给定字符串,解码为完整字符串。在编码过程中,如果该字符只出现一次,则该字符旁边将没有数字

输入:
“a5br3”

输出:
“AAAA BRRR”

我得到的输出是:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
我的逻辑正确吗?我的代码有什么问题

public String func (String str){
    if(str==null){
        return null;
    }
    String result="";
    for(int i=0;i<str.length();i++){
        char c= str.charAt(i);
        if(Character.isLetter(c)){
            result+=str.charAt(i);
        }
        else if(Character.isDigit(c)){
            for(int j=0;j<c;j++){
                result+=str.charAt(i-1);
            }
        }
    }

    return result;
}
publicstringfunc(stringstr){
如果(str==null){
返回null;
}
字符串结果=”;

对于(int i=0;i您将数字的数值与其字符代码混淆。此外,由于字符已经附加到字符串中一次,我们需要在循环过程中少添加一个副本。您可以使用以下代码:

for(int j=1;j<(c - '0');j++) ...

for(int j=1;j您将数字的数值与字符代码混淆。此外,由于字符已经附加到字符串中一次,我们需要在循环过程中少添加一个副本。您可以使用如下代码:

for(int j=1;j<(c - '0');j++) ...

for(int j=1;jfor tis输入:输入:“a10br3a3”输出:“aaaaaaaaaaaa brrraaa”此输入:“a10br3a3”实际输出iis:“aaaaaaaaaaaaaa brrraaa”但是我得到了一个数字…………它不需要10作为一个数字……当然不需要。如果你也可以有多个数字,你需要收集所有数字并将它们转换成一个数字。我只需要你最初在程序中拥有的。对于输入:输入:“a10br3a3”输出:“aaaaaaaaaa brrraaa”用于此输入:“a10br3a3”实际输出iis:“aaaaaaaaaa brrraaa”“但是我得到了一个数字…………它不需要10作为一个数字……当然不需要。如果你也可以有多个数字,你需要收集所有数字并将它们转换成一个数字。我只是取了你最初在程序中拥有的数字。