“线程中的异常”;“主要”;java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1表示Pig拉丁语

“线程中的异常”;“主要”;java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1表示Pig拉丁语,java,Java,我正在尝试制作一个程序,该程序将文本文件翻译成拉丁语。当我运行它时,它在线程“main”java.lang.StringIndexOutOfBoundsException中显示异常:字符串索引超出范围:-1。你能帮我修一下吗。我将向您展示代码中不正确的部分 publicstaticvoidpiglatenizefile(stringfilenamein,stringfilenameout) { 扫描仪填充=空; 字符串g=“”; 字符串输出=”; 字符串eachLetter=“”; int指数=

我正在尝试制作一个程序,该程序将文本文件翻译成拉丁语。当我运行它时,它在线程“main”java.lang.StringIndexOutOfBoundsException中显示异常:字符串索引超出范围:-1。你能帮我修一下吗。我将向您展示代码中不正确的部分

publicstaticvoidpiglatenizefile(stringfilenamein,stringfilenameout)
{
扫描仪填充=空;
字符串g=“”;
字符串输出=”;
字符串eachLetter=“”;
int指数=-1;
字符串元音=“aeiouAEIOU”;
尝试
{
infle=新扫描仪(新文件(fileNameIn));
}
捕获(IOE异常)
{
System.out.println(“oops”);
系统出口(0);
}
PrintWriter输出文件=null;
尝试
{
outfile=新的PrintWriter(新的FileWriter(fileNameOut));
}
捕获(IOE异常)
{
System.out.println(“未创建文件”);
系统出口(0);
}
while(infle.hasNext()){//while txt有下一行
String语句=infle.nextLine();//查看下一行
String[]word=句子。拆分(“”;//将句子拆分为单词数组

对于java中的(int i=0;i当您在stringpool()上查看的字符串上使用==时,因此
if(eachLetter==元音){
始终为false,因此索引将始终保持在-1,正如其他开发人员所说的那样,use equals和if条件有时将为true

不要使用
=
比较字符串。use
equals
。虽然在您的情况下,您应该使用
contains()
像这样:
if(元音.contains(eachLetter))
我建议使用扫描器和标记器处理“单词”,而不使用for循环。在这种情况下,如果
等于()之所以使用
,是因为提供的代码将单个字符串与字符串“aeiouAEIOU”进行比较。正如我的评论所述,解决方案使用的是
contains()