Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件到数组到JTable(索引超出范围)_Java_Arrays_Swing_File Io_Indexoutofboundsexception - Fatal编程技术网

Java 文件到数组到JTable(索引超出范围)

Java 文件到数组到JTable(索引超出范围),java,arrays,swing,file-io,indexoutofboundsexception,Java,Arrays,Swing,File Io,Indexoutofboundsexception,简要说明 我目前正在用我的第一个UI编写一个大规模(以我的技能水平)java程序。我的目标是让程序使用UI将职业信息保存到文本文件中,并允许它将该文件读入JTable,这两个操作通过JButtons完成 该文件在变量之间使用#,格式如下: 当我试图通过将行拆分为必要的部分来实例化文件中的职业构造函数(下面的代码)时,问题出现了,我不知道这是如何给我一个ArrayIndexOutOfBounds异常的,因为它似乎在数组的边界内 职业的参数化构造函数:(职业) 给我一个错误的代码:(Career

简要说明

我目前正在用我的第一个UI编写一个大规模(以我的技能水平)java程序。我的目标是让程序使用UI将职业信息保存到文本文件中,并允许它将该文件读入JTable,这两个操作通过JButtons完成

该文件在变量之间使用#,格式如下:

当我试图通过将行拆分为必要的部分来实例化文件中的职业构造函数(下面的代码)时,问题出现了,我不知道这是如何给我一个ArrayIndexOutOfBounds异常的,因为它似乎在数组的边界内


职业的参数化构造函数:(职业)


给我一个错误的代码:(CareerUI)


错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
at career.CareerUI$3.actionPerformed(CareerUI.java:200)
更新

刚刚做了一个将文本文件转换成多维数组的测试,它成功了,代码如下。我可能就快弄明白了

public class ScanToArray {
public static void main(String[] args) {
    try {
        Scanner scFile = new Scanner(new File("test.txt"));
        int x = 0;
        String[][] multi = new String[5][5];
        while (scFile.hasNextLine()){
            String[] next = scFile.nextLine().split("#");
            multi[x][0] = next[0];
            multi[x][1] = next[1];
            multi[x][2] = next[2];
            multi[x][3] = next[3];
            multi[x][4] = next[4];
            x++;
        }
        scFile.close();
        int ln = 0;
        for (int i = 0; i < multi.length; i++) {
            for (int j = 0; j < multi[i].length; j++) {
                if(i>ln){
                    System.out.println();
                    ln = i;
                }
                System.out.print("|" +multi[i][j] +"|");
            }
        }
    } catch (FileNotFoundException e) {
        JOptionPane.showMessageDialog(null, "Error: File not found");
    }
}
}
输出:

|0.0||0.1||0.2||0.3||0.4|
|1.0||1.1||1.2||1.3||1.4|
|2.0||2.1||2.2||2.3||2.4|
|3.0||3.1||3.2||3.3||3.4|
|4.0||4.1||4.2||4.4||4.4|
我将四处乱逛,看看是否可以将其转换为Jtable,然后尝试找出最初的错误

注意:我不是在问什么是arrayindexoutofbounds,我是在问为什么这个特定的代码会给出它

sYears = ARR_STUDY_YEARS[degreeLevelNo];
degreeLevel = ARR_DEGREE_LEVEL[degreeLevelNo];
您很可能不希望使用同一变量作为不同数组的索引


您很可能不想将同一变量用作不同数组的索引。

代码中几乎没有问题:

(1) 在输入的第4行,有第7个索引(如果用#分割),当您尝试获取
行[7]
时,该索引会中断,这将抛出
ArrayIndexOutOfBoundsException

建筑#80000#50000#6#5#2017#

(2) 您将无法使用
Integer.parseInt(第[6]行)解析第6个元素,因为它抛出
NumberFormatException


(3) 即使在第3行中,输入数据也不正确,拆分后它有7个以上的索引,这不会引发任何异常(因为您最多检索7个索引),但请确保将正确的数据作为输入传递。

您的代码几乎没有问题:

(1) 在输入的第4行,有第7个索引(如果用#分割),当您尝试获取
行[7]
时,该索引会中断,这将抛出
ArrayIndexOutOfBoundsException

建筑#80000#50000#6#5#2017#

(2) 您将无法使用
Integer.parseInt(第[6]行)解析第6个元素,因为它抛出
NumberFormatException


(3) 输入数据即使在第三行中也不正确,拆分后它有7个以上的索引,这不会引发任何异常(因为您最多检索7个索引),但请确保将正确的数据作为输入传递。

我这样做的原因是,某些级别的研究(例如博士学位)使用了一定的学习年限(例如10年)我这样做的原因是,某些级别的学习(如博士学位)需要一定的学习年限(如10年),因此您从未检查过文本文件的哪一行导致此异常?为什么?@Tom我的程序试图转换的第一行给出了错误,那么您的问题就不能用您使用的信息进行复制。试着建立一个新的平台。如果第一行导致异常,那么打印您的代码实际读取的内容,因为这不是您在这里向我们展示的内容(您的文本文件示例很好)。@Tom感谢您提供的信息,我现在正在尝试一些东西,我想我可能了解了一些事情……所以您从未检查过您的文本文件的哪一行导致此异常?为什么?@Tom我的程序试图转换的第一行给出了错误,那么您的问题就不能用您使用的信息进行复制。试着建立一个新的平台。如果第一行导致异常,那么打印您的代码实际读取的内容,因为这不是您在这里向我们展示的内容(您的文本文件示例很好)。@Tom感谢您提供的信息,我现在正在尝试一些东西,我想我可能会了解一些东西。。。
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
at career.CareerUI$3.actionPerformed(CareerUI.java:200)
public class ScanToArray {
public static void main(String[] args) {
    try {
        Scanner scFile = new Scanner(new File("test.txt"));
        int x = 0;
        String[][] multi = new String[5][5];
        while (scFile.hasNextLine()){
            String[] next = scFile.nextLine().split("#");
            multi[x][0] = next[0];
            multi[x][1] = next[1];
            multi[x][2] = next[2];
            multi[x][3] = next[3];
            multi[x][4] = next[4];
            x++;
        }
        scFile.close();
        int ln = 0;
        for (int i = 0; i < multi.length; i++) {
            for (int j = 0; j < multi[i].length; j++) {
                if(i>ln){
                    System.out.println();
                    ln = i;
                }
                System.out.print("|" +multi[i][j] +"|");
            }
        }
    } catch (FileNotFoundException e) {
        JOptionPane.showMessageDialog(null, "Error: File not found");
    }
}
}
0.0#0.1#0.2#0.3#0.4
1.0#1.1#1.2#1.3#1.4
2.0#2.1#2.2#2.3#2.4
3.0#3.1#3.2#3.3#3.4
4.0#4.1#4.2#4.4#4.4
|0.0||0.1||0.2||0.3||0.4|
|1.0||1.1||1.2||1.3||1.4|
|2.0||2.1||2.2||2.3||2.4|
|3.0||3.1||3.2||3.3||3.4|
|4.0||4.1||4.2||4.4||4.4|
sYears = ARR_STUDY_YEARS[degreeLevelNo];
degreeLevel = ARR_DEGREE_LEVEL[degreeLevelNo];