【发布时间】:2019-09-23 14:44:23
【问题描述】:
这是一个 java pig latin 翻译作业的作业。我是 java 新手,在解决这个问题时遇到了很大的困难。当我输入要读取和写入的文件时,我得到一个数组索引越界错误。在这一点上,我什至不确定代码的翻译部分是否能正常工作。任何有关纠正错误和翻译代码的帮助将不胜感激。
while(true){
System.out.println("Enter a text file to translate to Pig Latin. Quit to end.");
fileName = keyboard.nextLine();
if (fileName.equalsIgnoreCase("quit")){
break; //End program.
}
System.out.println("Enter a file to write the translated file to.");
outputFile = keyboard.nextLine();
if (outputFile.equalsIgnoreCase("quit")){
break; //End program.
}
fileToTranslate = new File(fileName);
try {
fileReader = new Scanner(fileToTranslate);
} catch (FileNotFoundException ex) {
//Logger.getLogger(PigLatinTranslatorKukuruda.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("File does not exist. Enter a new file.");
}
while(fileReader.hasNext()){
word = fileReader.next();
}
fileReader.close();
System.out.println(translator(word));
}
}
public static String translator(String string){
String[] wordsToTranslate = string.split(" ");
String word;
String translatedString = " ";
int first = 0;
for(int i = 0; i <= wordsToTranslate.length-1; i++){
word = wordsToTranslate[1];
if ((word.charAt(0) == 'a') || (word.charAt(0) == 'e') || (word.charAt(0) == 'i') ||
(word.charAt(0) == 'o') || (word.charAt(0) == 'u') || (word.charAt(0) == 'A') ||
(word.charAt(0) == 'E') || (word.charAt(0) == 'I') || (word.charAt(0) == 'O') ||
(word.charAt(0) == 'U')){
translatedString = word + "yay";
}
else{
for(int j = 0; j <= word.length()-1; j++){
if ((word.charAt(j) == 'a') || (word.charAt(j) == 'e') || (word.charAt(j) == 'i') ||
(word.charAt(j) == 'o') || (word.charAt(j) == 'u') ||
(word.charAt(j) == 'A') || (word.charAt(j) == 'E') ||
(word.charAt(j) == 'I') || (word.charAt(j) == 'O') ||
(word.charAt(j) == 'U')){
if (first == 0){
translatedString = word.substring(j) + word.substring(0, j) + "ay";
first = 1;
}
}
}
}
}
return translatedString;
}
现在我刚刚收到错误消息,不知道该怎么办。这应该写入文件,但我现在只是想输出它以查看它是否有效,但由于错误,我没有走那么远。谢谢
【问题讨论】:
-
应该
word = wordsToTranslate[1];是word = wordsToTranslate[i];吗?事实上,如果字符串被拆分后只有一个单词,它会给出一个索引越界错误。
标签: java exception indexoutofboundsexception