Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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中的数组越界异常 导入java.awt.BorderLayout; 导入java.awt.Color; 导入java.awt.Container; 导入java.awt.LayoutManager; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 导入java.io.BufferedReader; 导入java.io.BufferedWriter; 导入java.io.File; 导入java.io.FileNotFoundException; 导入java.io.FileOutputStream; 导入java.io.FileReader; 导入java.io.FileWriter; 导入java.io.IOException; 导入java.io.InputStreamReader; 导入java.io.PrintWriter; 导入javax.swing.JButton; 导入javax.swing.JFrame; 导入javax.swing.JLabel; 导入javax.swing.JScrollPane; 导入javax.swing.JTable; 导入javax.swing.JTextField; 公共类DataDisplay扩展了JFrame{ JTable表; 公共静态JLabel jl1=新JLabel(“活动ID”); 公共静态JTextField jt1=新JTextField(“输入活动ID”); 公共静态JLabel jl2=新JLabel(“活动名称”); 公共静态JTextField jt2=新JTextField(“输入活动名称”); 公共静态JLabel jl3=新JLabel(“开始日期”); 公共静态JTextField jt3=新JTextField(“输入开始日期”); 公共静态JLabel jl4=新JLabel(“结束日期”); 公共静态JTextField jt4=新JTextField(“输入结束日期”); 公共静态JLabel jl5=新JLabel(“之前报警”); 公共静态JTextField jt5=新JTextField(“输入报警”); 公共静态JLabel jl=新JLabel(“小时”); 公共静态JButton save=新JButton(“save”); 公共静态JButton close=新JButton(“close”); 公共容器c=this.getContentPane(); 专用静态整数计数器=0; 数据显示(){ 本转让书(“转让3”); 此.setLayout(null); 这个.背景(颜色.洋红色); c、 添加(jl1); c、 新增(jt1); c、 添加(jl2); c、 添加(jt2); c、 添加(jl3); c、 添加(jt3); c、 添加(jl4); c、 添加(jt4); c、 添加(jl5); c、 添加(jt5); c、 添加(jl); jl1.立根(10,10,100,100); jt1.立根(100,45,100,30); jl2.立根(10,60100100); jt2.立根(100120,30); jl3.立根(10110100100); jt3.立根(100145120,30); jl4.立根(10160100100); jt4.立根(100200120,30); jl5.立根(10210100100); jt5.立根(100250120,30); jl.立法院(230210100100); c、 添加(保存); 保存.立根(10300100,30); save.addActionListener(新建ActionListener()){ @凌驾 已执行的公共无效操作(操作事件arg0){ int-ce=0; //TODO自动生成的方法存根 字符串tableHeader[]={“活动ID”、“活动名称”、“开始日期”、“结束日期”、“报警时间(小时)”之前]; String tableData[][]=新字符串[ce=计数器+1][10]; table=新的JTable(tableData,tableHeader); 字符串行=null; BufferedReader b=null; 试一试{ b=新的BufferedReader(新的文件读取器(“Activity.txt”); }捕获(FileNotFoundException e1){ //TODO自动生成的捕捉块 e1.printStackTrace(); } 试一试{ 而((line=b.readLine())!=null){ 字符串[]s=null; int行=1; 对于(int counterc=1;counterc_Java_Text Files - Fatal编程技术网

如何解决java中的数组越界异常 导入java.awt.BorderLayout; 导入java.awt.Color; 导入java.awt.Container; 导入java.awt.LayoutManager; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 导入java.io.BufferedReader; 导入java.io.BufferedWriter; 导入java.io.File; 导入java.io.FileNotFoundException; 导入java.io.FileOutputStream; 导入java.io.FileReader; 导入java.io.FileWriter; 导入java.io.IOException; 导入java.io.InputStreamReader; 导入java.io.PrintWriter; 导入javax.swing.JButton; 导入javax.swing.JFrame; 导入javax.swing.JLabel; 导入javax.swing.JScrollPane; 导入javax.swing.JTable; 导入javax.swing.JTextField; 公共类DataDisplay扩展了JFrame{ JTable表; 公共静态JLabel jl1=新JLabel(“活动ID”); 公共静态JTextField jt1=新JTextField(“输入活动ID”); 公共静态JLabel jl2=新JLabel(“活动名称”); 公共静态JTextField jt2=新JTextField(“输入活动名称”); 公共静态JLabel jl3=新JLabel(“开始日期”); 公共静态JTextField jt3=新JTextField(“输入开始日期”); 公共静态JLabel jl4=新JLabel(“结束日期”); 公共静态JTextField jt4=新JTextField(“输入结束日期”); 公共静态JLabel jl5=新JLabel(“之前报警”); 公共静态JTextField jt5=新JTextField(“输入报警”); 公共静态JLabel jl=新JLabel(“小时”); 公共静态JButton save=新JButton(“save”); 公共静态JButton close=新JButton(“close”); 公共容器c=this.getContentPane(); 专用静态整数计数器=0; 数据显示(){ 本转让书(“转让3”); 此.setLayout(null); 这个.背景(颜色.洋红色); c、 添加(jl1); c、 新增(jt1); c、 添加(jl2); c、 添加(jt2); c、 添加(jl3); c、 添加(jt3); c、 添加(jl4); c、 添加(jt4); c、 添加(jl5); c、 添加(jt5); c、 添加(jl); jl1.立根(10,10,100,100); jt1.立根(100,45,100,30); jl2.立根(10,60100100); jt2.立根(100120,30); jl3.立根(10110100100); jt3.立根(100145120,30); jl4.立根(10160100100); jt4.立根(100200120,30); jl5.立根(10210100100); jt5.立根(100250120,30); jl.立法院(230210100100); c、 添加(保存); 保存.立根(10300100,30); save.addActionListener(新建ActionListener()){ @凌驾 已执行的公共无效操作(操作事件arg0){ int-ce=0; //TODO自动生成的方法存根 字符串tableHeader[]={“活动ID”、“活动名称”、“开始日期”、“结束日期”、“报警时间(小时)”之前]; String tableData[][]=新字符串[ce=计数器+1][10]; table=新的JTable(tableData,tableHeader); 字符串行=null; BufferedReader b=null; 试一试{ b=新的BufferedReader(新的文件读取器(“Activity.txt”); }捕获(FileNotFoundException e1){ //TODO自动生成的捕捉块 e1.printStackTrace(); } 试一试{ 而((line=b.readLine())!=null){ 字符串[]s=null; int行=1; 对于(int counterc=1;counterc

如何解决java中的数组越界异常 导入java.awt.BorderLayout; 导入java.awt.Color; 导入java.awt.Container; 导入java.awt.LayoutManager; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 导入java.io.BufferedReader; 导入java.io.BufferedWriter; 导入java.io.File; 导入java.io.FileNotFoundException; 导入java.io.FileOutputStream; 导入java.io.FileReader; 导入java.io.FileWriter; 导入java.io.IOException; 导入java.io.InputStreamReader; 导入java.io.PrintWriter; 导入javax.swing.JButton; 导入javax.swing.JFrame; 导入javax.swing.JLabel; 导入javax.swing.JScrollPane; 导入javax.swing.JTable; 导入javax.swing.JTextField; 公共类DataDisplay扩展了JFrame{ JTable表; 公共静态JLabel jl1=新JLabel(“活动ID”); 公共静态JTextField jt1=新JTextField(“输入活动ID”); 公共静态JLabel jl2=新JLabel(“活动名称”); 公共静态JTextField jt2=新JTextField(“输入活动名称”); 公共静态JLabel jl3=新JLabel(“开始日期”); 公共静态JTextField jt3=新JTextField(“输入开始日期”); 公共静态JLabel jl4=新JLabel(“结束日期”); 公共静态JTextField jt4=新JTextField(“输入结束日期”); 公共静态JLabel jl5=新JLabel(“之前报警”); 公共静态JTextField jt5=新JTextField(“输入报警”); 公共静态JLabel jl=新JLabel(“小时”); 公共静态JButton save=新JButton(“save”); 公共静态JButton close=新JButton(“close”); 公共容器c=this.getContentPane(); 专用静态整数计数器=0; 数据显示(){ 本转让书(“转让3”); 此.setLayout(null); 这个.背景(颜色.洋红色); c、 添加(jl1); c、 新增(jt1); c、 添加(jl2); c、 添加(jt2); c、 添加(jl3); c、 添加(jt3); c、 添加(jl4); c、 添加(jt4); c、 添加(jl5); c、 添加(jt5); c、 添加(jl); jl1.立根(10,10,100,100); jt1.立根(100,45,100,30); jl2.立根(10,60100100); jt2.立根(100120,30); jl3.立根(10110100100); jt3.立根(100145120,30); jl4.立根(10160100100); jt4.立根(100200120,30); jl5.立根(10210100100); jt5.立根(100250120,30); jl.立法院(230210100100); c、 添加(保存); 保存.立根(10300100,30); save.addActionListener(新建ActionListener()){ @凌驾 已执行的公共无效操作(操作事件arg0){ int-ce=0; //TODO自动生成的方法存根 字符串tableHeader[]={“活动ID”、“活动名称”、“开始日期”、“结束日期”、“报警时间(小时)”之前]; String tableData[][]=新字符串[ce=计数器+1][10]; table=新的JTable(tableData,tableHeader); 字符串行=null; BufferedReader b=null; 试一试{ b=新的BufferedReader(新的文件读取器(“Activity.txt”); }捕获(FileNotFoundException e1){ //TODO自动生成的捕捉块 e1.printStackTrace(); } 试一试{ 而((line=b.readLine())!=null){ 字符串[]s=null; int行=1; 对于(int counterc=1;counterc,java,text-files,Java,Text Files,您的s数组将不超过4个元素。从: limit参数控制应用模式的次数,从而影响结果数组的长度。如果limit n大于零,则模式最多应用n-1次,数组的长度将不大于n,数组的最后一个条目将包含最后一个匹配定界之外的所有输入呃 您可以使用s=line.split(“|”,4)设置s。这里的n是4,这意味着s的长度不大于4 当您像这样迭代s时: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container;

您的
s
数组将不超过4个元素。从:

limit参数控制应用模式的次数,从而影响结果数组的长度。如果limit n大于零,则模式最多应用n-1次,数组的长度将不大于n,数组的最后一个条目将包含最后一个匹配定界之外的所有输入呃

您可以使用
s=line.split(“|”,4)
设置
s
。这里的n是4,这意味着
s
的长度不大于4

当您像这样迭代
s
时:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;


public class DataDisplay extends JFrame{
    JTable table;
    public static JLabel jl1= new JLabel("Activity ID");
    public static JTextField jt1= new JTextField("Enter Activity ID");

    public static JLabel jl2= new JLabel("Activity name");
    public static JTextField jt2 = new JTextField("Enter Activity name");

    public static JLabel jl3= new JLabel("Start Date");
    public static JTextField jt3= new JTextField("Enter Start Date");

    public static JLabel jl4 = new JLabel("End Date");
    public static JTextField jt4= new JTextField("Enter End Date");

    public static JLabel jl5 = new JLabel("Alarm Before");
    public static JTextField jt5= new JTextField("enter alarm");
    public static JLabel jl= new JLabel("HOURS");


    public static JButton save = new JButton("SAVE");
    public static JButton close = new JButton("CLOSE");
    public Container c= this.getContentPane();

    private static int counter=0;
    DataDisplay(){

        this.setTitle("Assignment 3");
        this.setLayout(null);
        this.setBackground(Color.MAGENTA);
        c.add(jl1);
        c.add(jt1);
        c.add(jl2);
        c.add(jt2);
        c.add(jl3);
        c.add(jt3);
        c.add(jl4);
        c.add(jt4);
        c.add(jl5);
        c.add(jt5);
        c.add(jl);


        jl1.setBounds(10, 10, 100, 100);
        jt1.setBounds(100, 45, 100, 30);

        jl2.setBounds(10,60,100,100);
        jt2.setBounds(100,100,120,30);

        jl3.setBounds(10,110,100,100);
        jt3.setBounds(100,145,120,30);

        jl4.setBounds(10,160,100,100);
        jt4.setBounds(100,200,120,30);

        jl5.setBounds(10,210,100,100);
        jt5.setBounds(100,250,120,30);
        jl.setBounds(230,210,100,100);


        c.add(save);
        save.setBounds(10,300,100,30);
        save.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent arg0) {
                int ce=0;
                // TODO Auto-generated method stub
                String tableHeader[] ={"Activity ID", "Activity name", "Start Date", "End Date","Alarm before (Hours)"};
                String tableData[][]= new String[ce=counter+1][10];
                table = new JTable(tableData, tableHeader);

                String line=null;

                BufferedReader b=null;
                try {
                    b = new BufferedReader(new FileReader("Activity.txt"));
                } catch (FileNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }


                    try {
                        while ((line=b.readLine())!=null){
                            String[] s=null;
                            int row=1;


                            for(int counterc=1; counterc<=5; counterc++ ){//*ARRAY OUT OF BOUND EXCEPTION*
                             s=line.split("|",4);


                            }

                            ***for(int loop=0;loop<=5;loop++){
//here gives exception                              
                                tableData[row++][loop]=s[loop];***

                            }
                            row++;
                            counter++;
                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }



                tableData[counter][0]=jt1.getText();
                tableData[counter][1]=jt2.getText();
                tableData[counter][2]=jt3.getText();
                tableData[counter][3]=jt4.getText();
                tableData[counter][4]=jt5.getText();


                JScrollPane scrollPane = new JScrollPane(table);
                c.add(scrollPane, BorderLayout.CENTER);
                scrollPane.setBounds(10, 400, 700, 600);
                counter++;
                try{
                    FileWriter out= new FileWriter("Activity.txt",true);
                    BufferedWriter br= new BufferedWriter(out);
                    PrintWriter p= new PrintWriter(br);
                    p.println(jt1.getText()+"|"+jt2.getText()+"|"+jt3.getText()+"|"+jt4.getText()+"|"+jt5.getText());
                    p.close();

                }
                catch(IOException e){
                    e.getStackTrace();

                }
            }

        });

        c.add(close);
        close.setBounds(200,300,100,30);

        this.setBounds(100,100,1000,1000);
        this.setVisible(true);
        c.setVisible(true);

    }

    public static void main(String args[]){

        DataDisplay dd= new DataDisplay();
    }

}

用于循环太长了,读不下去了,我不相信你复制和粘贴的所有代码都与你的问题有关。我们不需要看到你所有的标签,所有的按钮等等。简单的解决办法可能是使用列表,附加到列表中,然后迭代它。现在你是紧挨着的。您的数据已更改,但如果您这样做,则更改集合会更加动态。虽然您现在可能不需要它,但将来可能会用作参考。@user3102085您遇到的是相同的错误还是不同的错误?请将完整错误编辑为原始问题-这将有助于保持格式。我遇到了相同的错误。但是,当我删除了给出错误的代码部分时,我在上面的for循环中得到了相同的错误(在该循环中字符串被拆分)
for(int loop=0;loop<=5;loop++){
    tableData[row++][loop]=s[loop];
}