gpt4 book ai didi

java - 字符串索引超出范围错误帮助。 pig 拉丁项目

转载 作者:行者123 更新时间:2023-12-01 20:04:48 24 4
gpt4 key购买 nike

我正在做一项作业,将字符串句子转换为 pig 拉丁语。

我已经计划并编写了所有代码,但出现此错误:

String index is out of range

下面是我的代码:

import java.util.*;
public class project1d {
public static void main(String[] args){
System.out.println("This is a pig latin translator. Enter a sentence to convert.");
Scanner console = new Scanner(System.in);
pigLat(console);
}
public static void pigLat(Scanner console){
String sentence = console.next();
int start = 0;
int end = 0;
int counter =0;
while(sentence.length()>0){
while(end<sentence.length()-1){
while(sentence.charAt(counter+1)!=' '){
counter++;
end = counter;
}
String word = sentence.substring(start,end);
int index= 0;
char letter= word.charAt(index);
while (letter != 'a' || letter != 'e' || letter != 'i' ||
letter != 'o' || letter != 'u'){
index++;
}
System.out.print(word.substring(index,word.length()-1)+"-");
System.out.print(word.substring(0,index-1)+"ay");
counter++;
start=end+1;
}
System.out.println("Do you wanna put in another? Press ENTER to quit");
sentence = console.next();
}
}
}

我认为第三个 while 循环增加了太多次,但我不知道如何解决这个问题,也不知道这是否是问题所在。

实际的java错误如下:

- java.lang.StringIndexOutOfBoundsException: String index out of range: 4
- at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
- at java.base/java.lang.String.charAt(String.java:693)
- at project1d.pigLat(project1d.java:15)
- at project1d.main(project1d.java:6)

感谢任何帮助。

最佳答案

不幸的是,除了代码是否达到预期目的之外,还有很多问题。

  • 您正在增加索引并检查值,但未确认这些索引是否有效。

  • 在整个过程的第一次迭代之后再次使用变量之前,您没有清除变量。

  • 您正在增加索引,但在字母检查时出现无限循环,因为增加索引时您没有更改字母。
  • 字母检查是检查重叠的条件 - letter!= a || letter!=e 始终为 true,因此这也使其成为无限循环。
  • 正如 Andy 所指出的: String Sentence = console.next();只会读一个单词。请改用 nextLine。

请尝试:

public static void pigLat(Scanner console){
String sentence = console.next();
int start = 0;
int end = 0;
int counter =0;
while(sentence.length()>0){
start = 0; end = 0; counter = 0;
while(end<sentence.length()-1){
while(sentence.length()>counter+1 && sentence.charAt(counter+1)!=' '){
counter++;
end = counter;
}
String word = sentence.substring(start,end);
if(word.length()>0){
int index = 0;
char letter = word.charAt(index);
while(index+1<word.lenght() && letter != 'a' && letter != 'e' && letter != 'i' && letter != 'o' && letter != 'u'){
index++;
letter = word.charAt(index);
}
System.out.print(word.substring(index,word.length()-1)+"-");
System.out.print(word.substring(0,index-1)+"ay");
}
counter++;
start=end+1;
}
System.out.println("Do you wanna put in another? Press ENTER to quit");
sentence = console.nextLine();
}

您的代码存在一些错误是很自然的,因为您仍在学习如何正确地做到这一点。坚持下去;)

关于java - 字符串索引超出范围错误帮助。 pig 拉丁项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58989328/

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