Java charAt方法出了什么问题?
节目的这一部分给我带来了麻烦。程序正在正确接收该文件。没有charAt方法,程序运行得很好。我真的不确定问题出在哪里。显然,这不是整个程序,只是给我一个错误的部分 错误: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 0位于java.lang.String.charAt(未知源代码),位于 GenSeq.main(GenSeq.java:111)位于 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于 位于的sun.reflect.NativeMethodAccessorImpl.invoke(未知源) sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)位于 java.lang.reflect.Method.invoke(未知源代码)位于 edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272) 节目:Java charAt方法出了什么问题?,java,Java,节目的这一部分给我带来了麻烦。程序正在正确接收该文件。没有charAt方法,程序运行得很好。我真的不确定问题出在哪里。显然,这不是整个程序,只是给我一个错误的部分 错误: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 0位于java.lang.String.charAt(未知源代码),位于 GenSeq.main(GenSeq.java:111)位于 sun.reflect.NativeMethodAccessorImpl.invoke
do{
line = inputStream.nextLine();
line = line.trim();
if (line.charAt(0) == '>'){
//Checking to see if it's an information line
info = info + line;
count++;
//Used to count the number of entries
}
else{
seq = seq + line;
//Concatenating the sequence together
}
while (inputStream.hasNextLine());
inputStream.close();
编辑:我们正在处理DNA和RNA序列,所以它只能从A、T、C、G或U开始处理我现在尝试的空白行。但仍然会出现错误
do{
line = inputStream.nextLine();
char first = line.charAt(0);
if (first == '>'){
//Checking to see if it's an information line
info = info + line;
count++;
//Used to count the number of entries
}
if (first == 'A' || first == 'T' || first == 'G' || first == 'C' || first == 'U'){
seq = seq + line;
}
}
while (inputStream.hasNextLine());
inputStream.close();
可能的解决方案是将
line.charAt(0)='>'
替换为line.startsWith(“>”)
,至少这样可以消除数组的问题,并且您可以从那里完成调试。您的文件中有空行吗?在这种情况下,您期望的行为是什么?您可以编写System.out.println(line.charAt(0))代码>是。文件中有空行。我希望trim方法可以处理这个问题。trim方法只删除尾随的空白字符,对您的例外情况毫无帮助。您认为trim
有什么作用?如果有一行没有内容,则字符串
为“
”。没有字符(0)
。