Java 我需要打印所有以字母开头的单词*&引用;输入到另一个输出txt(13000行),但是这个程序可以使用大约200行

Java 我需要打印所有以字母开头的单词*&引用;输入到另一个输出txt(13000行),但是这个程序可以使用大约200行,java,Java,} 有人能帮我做这个吗? 在cmd中,我得到了类似于“线程中的异常”main“java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0您似乎在字符串上引用索引的唯一位置是以下if语句: private static void readFile1(String in, String out) throws IOException { FileInputStream fis = new FileInputStream(new File(in)

}

有人能帮我做这个吗?
在cmd中,我得到了类似于“线程中的异常”main“java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0

您似乎在字符串上引用索引的唯一位置是以下
if语句

private static void readFile1(String in, String out) throws IOException
{
    FileInputStream fis = new FileInputStream(new File(in));

    BufferedReader br = new BufferedReader(new InputStreamReader(fis));

    BufferedWriter writer = null;

    writer = new BufferedWriter(new OutputStreamWriter(
          new FileOutputStream(out), "utf-8"));

    String line = null;
    while ((line = br.readLine()) != null)
    {
        if(line.length() > 0)
        {
            String[] words = line.split("\\s+");
            for(String word : words)
            {
                if(word.charAt(0)=='*')
                {
                    //System.out.println(word);
                    writer.write(word);
                    writer.newLine();
                }
            }
        }          
    }

    br.close();
    writer.close();
    fis.close();
}
将if语句更改为:

if(word.charAt(0)=='*')
这将首先检查
单词
是否为空,如果不是,则会查找正确的
字符

更新

您还应该在
word
上添加NULL检查,以避免出现
NullPointerException

if(!word.isEmpty() && word.charAt(0)=='*')

你能说得更具体一点吗?我不精通java,我知道这对大多数人来说都是一个愚蠢的问题调试
word
,在查找字符之前先查看值。查看异常出现之前的值你可能正在读一个空行。添加trim()对于大于零的行长度测试。@Gilbert不会根据我记忆中的
split()
的复杂性完全解决问题。有人能说得更具体些吗?我的意思是我是java初学者,当我说初学者时,我说我不知道,你能不能说“删除它,然后把它放进去?”“?如果投反对票,请说明原因,因为它显然有效
if(word != null && !word.isEmpty() && word.charAt(0)=='*')