Java charAt方法出了什么问题?

Java charAt方法出了什么问题?,java,Java,节目的这一部分给我带来了麻烦。程序正在正确接收该文件。没有charAt方法,程序运行得很好。我真的不确定问题出在哪里。显然,这不是整个程序,只是给我一个错误的部分 错误: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 0位于java.lang.String.charAt(未知源代码),位于 GenSeq.main(GenSeq.java:111)位于 sun.reflect.NativeMethodAccessorImpl.invoke

节目的这一部分给我带来了麻烦。程序正在正确接收该文件。没有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)

节目:

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)