【发布时间】:2018-10-21 14:02:15
【问题描述】:
我一直在做一个猪拉丁语翻译器,它基本上从用户的句子中裁剪出单个单词,将其传递给翻译方法,它将逐个字母地查找 a、e、i、o、u翻译这个词。从理论上讲,我认为它可以正常工作,但是我的代码出了点问题。我认为这是 charAt() 的事情,但考虑到我使用各种子字符串、长度和索引相关的东西,它看起来很乱。有人可以帮我修复我的代码吗?我也想知道是否有更好的方法来写这个。感谢您的建议。
import java.util.*;
import static java.lang.System.*;
public class PigLatinTranslator {
public static Scanner scan = new Scanner(in);
public static void main(String args[]){
String translated = "";
out.println("Enter the sentence you want to translate");
String input = scan.nextLine ();
input = input.toUpperCase ();
while(input.length() > 0){
int a = input.indexOf (" ");
if (a == -1){
a = 1;
}
String stripped = input.substring (0, a);
input = input.substring (a+1, input.length());
translated += translator(stripped);
}
out.println(translated);
}
public static String translator(String input) {
int index = 0;
String implement, sum = "";
if(input.charAt (index) == 65 || input.charAt (index) == 69 || input.charAt (index) == 73 ||
input.charAt (index) == 79 || input.charAt (index) == 85){
input += "-ay ";
out.println(input);
return input;
}
while(input.charAt (index) != 65 && input.charAt (index) != 69 && input.charAt (index) != 73 &&
input.charAt(index) != 79 && input.charAt(index) != 85){
implement = Character.toString(input.charAt (index));
sum += implement;
index ++;
}
input = input.substring(index, input.length()) + "-" + sum + "ay";
return input;
}
}
【问题讨论】:
-
你遇到了什么问题?
-
编译器说字符串索引越界。根据编译器,我很确定它发生在翻译方法中,并且是由 charAt 命令引起的
-
我想你会在底部
while中得到一个OOB 异常,因为你没有检查index是否大于input的长度。还有子字符串 -
@Ubuntu4EVA 你能用堆栈跟踪更新你的帖子吗?它应该包括一个行号,你要越界。
-
我目前没有电脑,各位大佬能不能自己编译一下看看是什么问题?
标签: java string translators