gpt4 book ai didi

java - 字符串插入方法不适用于非零索引

转载 作者:行者123 更新时间:2023-12-02 06:21:22 25 4
gpt4 key购买 nike

即使字符串长度为 10 个字符,我也会收到以下代码的 ArrayIndexOutOfBoundsException。错误发生在代码 printedLine.insert(3, '-'); 的倒数第三行。

public class Program1 {
public static void main(String[] args) {
int caseNumber, numberOfCases;
String currentLine;
int lineNumber;

Scanner in = new Scanner(System.in);

numberOfCases = in.nextInt();
String[] phoneNumbers = new String[numberOfCases + 1];

for (caseNumber = 0; caseNumber <= numberOfCases; caseNumber++) {
phoneNumbers[caseNumber] = in.nextLine();
}

for (lineNumber = 0; lineNumber < phoneNumbers.length; lineNumber++) {
currentLine = phoneNumbers[lineNumber];
currentLine = currentLine.replaceAll("-", "");

if (currentLine.length() > 10) {
currentLine = currentLine.substring(0, 10);
}

System.out.println(currentLine);

StringBuffer printedLine = new StringBuffer(currentLine);
printedLine.insert(3, '-');
printedLine.insert(7, '-');

System.out.println(printedLine);
}
}
}

有谁知道为什么会这样吗?

更新:如果我只打印 String Buffer 对象,所有值都会与原始字符串对齐,该字符串长 10 个字符。

最佳答案

尝试消耗更多 token 时使用in.nextInt();的问题是它只读取int值。

当您按 Enter 插入另一个值并尝试使用 in.nextLine(); 时,它将消耗 "\n" Enter 键“键入”,而不是您刚刚输入的值!

解决此类问题有两种方法:

numberOfCases = in.nextInt();
in.nextLine(); // (It consumes the \n character)

或者

numberOfCases = Integer.parseInt(in.nextLine());

关于java - 字符串插入方法不适用于非零索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com