Java space 后无法识别特殊字符

Java unable to recognise special character after space

我必须为以下问题编写一个程序:

我写了下面的代码:

package secret_message;
import java.util.Scanner;
public class Secret_Message {
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        int lines, i, codenumber, k;
        String code, codepart, codechar2;
        char codecharacter1, codecharacter2;
        lines = sc.nextInt();
        codepart = "";
        for (i = 1; i<=lines; i++)
        {
            code = sc.next();
            codecharacter1 = code.charAt(0);
            codecharacter2 = code.charAt(1);
            codenumber = Character.getNumericValue(codecharacter1);
            for (k=1; k<=codenumber; k++)
            {
                codechar2 = Character.toString(codecharacter2);
                codepart = codepart + " " + codechar2;
            }
            System.out.println(codepart); 
            codepart = "";
        }
    } 
}

当我在每一行的输入没有 space 时,它工作得很好(例如,如果我写“9+”而不是“9+”)。但是,例如,在写入“9 +”时,出现以下错误:“字符串索引超出范围”。我尝试将代码中的 codecharacter2 = code.charAt(1); 更改为 codecharacter2 = code.charAt(2);codecharacter2 = code.charAt(3); 但没有成功。我还尝试使用 code.replaceAll("\s", ""); 创建一个新变量,但这也会删除“9 +”中的“+”。

我知道包含 space 只会产生细微的差别,但问题明确说明了它的必要性。因此,对于如何解决此问题的任何帮助,我将不胜感激!

问题出在这里code = sc.next();这意味着您只是从输入中获取第一个标记,即第一个字符。相反,您需要按照您的逻辑使用整条线,即

code = sc.nextLine();

更好的解决方案是将整数和字符分开。检查以下代码:

    for (i = 1; i<=lines; i++)
    {
        codenumber= sc.nextInt();
        codechar2 = sc.nextLine().charAt(0);
        for (k=1; k<=codenumber; k++)
        {
            codepart = codepart + " " + codechar2;
        }
        System.out.println(codepart); 
        codepart = "";
    }