gpt4 book ai didi

java - 在 Java 中切换字符串中的字母并收到索引超出范围错误

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

我正在尝试编写一个程序,该程序将输入一个句子,然后输入两个字母,然后切换这些字母的所有实例,然后打印出切换后的句子。例如,他们可以输入

I like to eat bananas

然后是“e”和“a”,我的程序将打印

I lika to aet benenes 

这是我的代码,但最后它打印出字符串索引。任何想法如何解决这一问题?

System.out.println("Write something awesome.");
String input1 = Keyboard.readString();
System.out.println("Pick a letter from that awesome sentence.");
char letter1 = Keyboard.readChar();
System.out.println("Pick another letter from that awesome sentence.");
char letter2 = Keyboard.readChar();

double let1 = (input1.length());
int let1Next = (int) let1;
double let2 = (input1.length());
int let2Next = (int) let2;

String newUserImput = input1.replace(input1.charAt(let1Next),
input1.charAt(let2Next));
System.out.println(newUserImput);

最佳答案

如果没有堆栈跟踪,我必须猜测异常就在这一行。

String newUserImput = input1.replace(input1.charAt(let1Next),
input1.charAt(let2Next));

input1.charAt(let1Next) 解析为什么?

double let1 = (input1.length());
int let1Next = (int) let1;
double let2 = (input1.length());
int let2Next = (int) let2;

这并不是你真正的意思。

let1Next 将代表数组的末尾 + 1,就像 let2Next 一样。

因此,这里有两个主要错误:

  1. 您将用其自身替换所有出现的给定字符。
  2. 您选择的字母超出了字符串的末尾。请记住,字符串索引(例如 String.charAt 的输入)是从 0 开始的,因此它们的范围是从 0 到 (length - 1)。通过指定 input1.length,您需要字符串最后一个字符之后的字符,因此会出现 StringIndexOutOfBoundsException

关于java - 在 Java 中切换字符串中的字母并收到索引超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604002/

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