当我遍历整个enable1 txt文件时,会遇到一些令人困惑的错误。(
https://raw.githubusercontent.com/dolph/dictionary/master/enable1.txt
)检查是否符合“i before e except after c”英文单词“rule”。我注意到当我从charat(indexei-1)中删除“-1”时代码成功了,我在下面加了星号(***)。
你知道为什么会这样吗?错误只是在迭代的“e”部分的看似随机的地方说“at java.lang.string.charat(string.java:658)”,“main.ibefore”和“at main.main”。然后说Va\Cache \Excutor Snabs\Run.xml:53:Java返回:1构建在最后失败。
我对Java很陌生,所以任何其他建设性的批评都是值得赞赏的。谢谢!
主营:
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
EnableWord test = new EnableWord();
test.EnableWords();
Scanner read = new Scanner(System.in);
ArrayList list = new ArrayList();
list = test.getList();
int x = 0;
int falseCounter = 0;
while (x < list.size()) {
System.out.print(list.get(x) + ": ");
String input = list.get(x);
if (input.equals("x")) {
break;
} else {
System.out.println(iBeforeE(input));
if(!iBeforeE(input)) {
falseCounter++;
}
x++;
}
}
System.out.println(falseCounter);
}
public static boolean iBeforeE(String input) {
if (!input.contains("ie") && !input.contains("ei")) {
return true;
}
if (input.contains("ie")) {
int indexIE = input.indexOf("ie");
Character searchIE = input.charAt(indexIE - 1);
if (!searchIE.toString().equals("c")) {
return true;
}
} else if (input.contains("ei")) {
int indexEI = input.indexOf("ei");
****Character searchEI = input.charAt(indexEI - 1);****
if (searchEI.toString().equals("c")) {
return true;
}
}
return false;
}
类启用字:
}
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class EnableWord {
private ArrayList list;
private Scanner s;
private File file;
public EnableWord() {
}
public void EnableWords() {
try {
this.s = new Scanner(this.file = new File("enable1.txt"));
} catch (FileNotFoundException ex) {
Logger.getLogger(EnableWord.class.getName()).log(Level.SEVERE, null, ex);
}
this.list = new ArrayList<>();
while (s.hasNext()) {
list.add(s.next());
}
s.close();
}
public void printWords() {
for (String word : list) {
System.out.println(word);
}
}
public ArrayList getList() {
ArrayList newList = new ArrayList();
for (String word : list) {
newList.add(word);
}
return list;
}
}