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)=='*')