如何解决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];
}