Java 为什么ArrayList返回错误:ArrayIndexOutOfBoundsException
我不知道为什么。我逐行读取文本文件,通过拆分将其剪切并保存到ArrayList中。但是,如果文件长度超过100行,我的程序将无法工作,因此它在split命令中返回一个错误。我想知道我的电脑是否内存不足 各位,谁能说得清楚?提前谢谢你。 这是我的密码:Java 为什么ArrayList返回错误:ArrayIndexOutOfBoundsException,java,arraylist,Java,Arraylist,我不知道为什么。我逐行读取文本文件,通过拆分将其剪切并保存到ArrayList中。但是,如果文件长度超过100行,我的程序将无法工作,因此它在split命令中返回一个错误。我想知道我的电脑是否内存不足 各位,谁能说得清楚?提前谢谢你。 这是我的密码: import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; im
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.JOptionPane;
class Vocab implements Comparable<Vocab>{
private String vocab;
private String explanation;
public Vocab(String vocab, String explanation) {
this.vocab = vocab;
this.explanation = explanation;
}
public int compareTo(Vocab that){
return this.vocab.compareTo(that.vocab);
}
public String getVocab() {
return vocab;
}
public void setVocab(String vocab) {
this.vocab = vocab;
}
public String getExplanation() {
return explanation;
}
public void setExplanation(String explanation) {
this.explanation = explanation;
}
}
public class Test {
public static void readFile(String fileName, ArrayList<String> a) throws FileNotFoundException {
try {
File fileDir = new File(fileName);
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream(fileDir), "UTF8"));
String str;
while((str= in.readLine())!= null){
a.add(str);
}
in.close();
}
catch (IOException e)
{
JOptionPane.showMessageDialog(null,"Something in database went wrong");
}
}
public static void main(String[] args) throws FileNotFoundException {
// TODO code application logic here
ArrayList<Vocab> a= new ArrayList<Vocab>();
ArrayList<String> b= new ArrayList<String>();
readFile("DictVE.dic",b);
for (String t: b){
String[] temp= t.split(":");
a.add(new Vocab(temp[0].trim(), temp[1].trim()));// error in here
}
}
}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.util.Collections;
导入javax.swing.JOptionPane;
类Vocab实现了可比较的{
私人弦乐;
私有字符串解释;
公共词汇(字符串词汇、字符串解释){
this.vocab=vocab;
这个解释=解释;
}
公共int比较(Vocab-that){
返回this.vocab.compareTo(that.vocab);
}
公共字符串getVocab(){
返回vocab;
}
公共void setVocab(字符串vocab){
this.vocab=vocab;
}
公共字符串getExpression(){
返回说明;
}
公共解释(字符串解释){
这个解释=解释;
}
}
公开课考试{
公共静态void readFile(字符串文件名,ArrayList a)引发FileNotFoundException{
试一试{
File fileDir=新文件(文件名);
BufferedReader in=新的BufferedReader(
新的InputStreamReader(
新文件输入流(fileDir),“UTF8”);
字符串str;
而((str=in.readLine())!=null){
a、 添加(str);
}
in.close();
}
捕获(IOE异常)
{
showMessageDialog(null,“数据库中出现了错误”);
}
}
公共静态void main(字符串[]args)引发FileNotFoundException{
//此处的TODO代码应用程序逻辑
ArrayList a=新的ArrayList();
ArrayList b=新的ArrayList();
读取文件(“DictVE.dic”,b);
for(字符串t:b){
字符串[]temp=t.split(“:”);
a、 添加(新词汇(临时[0].trim(),临时[1].trim());//此处有错误
}
}
}
这是我的文件:中有一个微妙的问题,即从字符串末尾丢弃空令牌: 因此,结果数组中不包括尾随的空字符串 因此: 通过将负int作为第二个参数传递,可以保留空字符串:
System.out.println("Hello:".split(":", -1).length); // Prints 2.
中存在一个微妙的问题,即从字符串末尾丢弃空标记: 因此,结果数组中不包括尾随的空字符串 因此: 通过将负int作为第二个参数传递,可以保留空字符串:
System.out.println("Hello:".split(":", -1).length); // Prints 2.
您确定所有行都有“:”@KevinEsche在文件的每一行中始终有“:”字符吗。我已经定义了它,您可以在我的线程末尾查看它们。您的任何字符串都以
:
?@ParkerHalo结尾,我确定:)。你可以试试你的电脑。我将文件放在线程的末尾:)您确定所有行都有“:”?@KevinEsche在文件的每行中始终有“:”字符吗。我已经定义了它,您可以在我的线程末尾查看它们。您的任何字符串都以:
?@ParkerHalo结尾,我确定:)。你可以试试你的电脑。我将文件放在线程的末尾:)