首页 > 解决方案 > Java中的多个字符

问题描述

public class String_multiply {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String str = s.next();
        int len = str.length();
        int i=0;
        String c_s = new String();
        while(i<len) {
            if (Character.isAlphabetic(str.charAt(i))){
                char c =  str.charAt(i);
                c_s = String.valueOf(c);
                i++;
            }
            String n ="";
            while(Character.isDigit(str.charAt(i))) {
                n+=str.charAt(i);
                i++;
            }
            int inte =Integer.parseInt(n);
            System.out.print(c_s.repeat(inte));
        }
    }
}

我不知道,我哪里出错了。我得到“字符串索引超出范围:4”作为错误。

输入:a1b4c3

输出:abbbbccc

标签: javaerror-handlingindexoutofboundsexceptionindex-errorstringindexoutofbounds

解决方案


问题是这个循环:

while(Character.isDigit(str.charAt(i))) {
    n+=str.charAt(i);
    i++;
}

它尝试从字符串中读取一系列数字,但如果i超过字符串的末尾,它不会停止。

如果出现以下情况,您必须停止该循环i == len

while(i < len && Character.isDigit(str.charAt(i))) {
    n+=str.charAt(i);
    i++;
}

推荐阅读