gpt4 book ai didi

java - 程序运行时出现ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 14:43:23 34 4
gpt4 key购买 nike

我为 gps NMEA0183 协议(protocol)数据解码编写代码,我成功完成了它,但是当程序在执行后处于运行状态时显示错误 arrayindexoutofbounce 我无法理解为什么会发生这种情况。我的代码在下面直接关注我的错误,我只是给出了我的整个错误仅提供更多详细信息的代码。谢谢。

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/*
* test2.java
*
* Created on Mar 17, 2013, 8:11:09 AM
*/
package vpspro;
import java.awt.Color;
import java.awt.Component;
import java.io.IOException;
import java.util.Enumeration;
import java.util.TooManyListenersException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.comm.UnsupportedCommOperationException;
import vpspro.communication;
import java.util.Timer;
import java.util.TimerTask;
import javax.comm.CommPortIdentifier;
import javax.swing.JOptionPane;
import javax.swing.JSpinner;

/**
*
* @author DJ ROCKS
*/
public class test2 extends javax.swing.JFrame {


CommPortIdentifier portId = null;
public boolean bul=false;
public Object v;
public String all=null;


Timer timer;
private Component test2;
public test2() {

initComponents();



}


private void data() throws UnsupportedCommOperationException, IOException, TooManyListenersException,ArrayIndexOutOfBoundsException
{

String[] a2;
String a1[];
String c;
String[] t;
String s[];
communication aa=new communication();


while(bul==true)
{
int tp=0;
if(aa.com().isEmpty()==false)
{

s=aa.com().split("\\$",0);

char d=aa.com().charAt(0);
switch(d)
{
case '$':

a1=s[1].split("\\*",0);
int l=a1[0].length();
char[] a=a1[0].toCharArray();
int b=0;

for(int p=0;p<l;p++)
{

b=b^a[p];

}

c=Integer.toHexString(b);
if(a1[1].equalsIgnoreCase(c))
{
System.err.println(a1);
t=a1[0].split(",",0);
if((a1[0].substring(2, 5).equalsIgnoreCase("GGA")))
{
lon.setText(t[4].concat(" "+t[5]));
System.out.println(t[5]);

lat.setText(t[2].concat(" "+t[3]));
utc.setText(t[1]);


}
else
{
System.err.println("System fail");
}

}

}

}

}

}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jDialog1 = new javax.swing.JDialog();
jDialog2 = new javax.swing.JDialog();
jDialog3 = new javax.swing.JDialog();
jPanel2 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
sp = new javax.swing.JSpinner();
bd = new javax.swing.JComboBox();
ok = new javax.swing.JButton();
dis = new javax.swing.JButton();
lon = new javax.swing.JTextField();
lat = new javax.swing.JTextField();
utc = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();

javax.swing.GroupLayout jDialog1Layout = new javax.swing.GroupLayout(jDialog1.getContentPane());
jDialog1.getContentPane().setLayout(jDialog1Layout);
jDialog1Layout.setHorizontalGroup(
jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
jDialog1Layout.setVerticalGroup(
jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);

jDialog2.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

javax.swing.GroupLayout jDialog2Layout = new javax.swing.GroupLayout(jDialog2.getContentPane());
jDialog2.getContentPane().setLayout(jDialog2Layout);
jDialog2Layout.setHorizontalGroup(
jDialog2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
jDialog2Layout.setVerticalGroup(
jDialog2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);

javax.swing.GroupLayout jDialog3Layout = new javax.swing.GroupLayout(jDialog3.getContentPane());
jDialog3.getContentPane().setLayout(jDialog3Layout);
jDialog3Layout.setHorizontalGroup(
jDialog3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
jDialog3Layout.setVerticalGroup(
jDialog3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(255, 102, 0));
setFont(new java.awt.Font("Alaska", 1, 10));
setForeground(new java.awt.Color(51, 51, 255));

javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 487, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 608, Short.MAX_VALUE)
);

jPanel1.setBackground(new java.awt.Color(153, 204, 255));
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
jPanel1.setMaximumSize(new java.awt.Dimension(3276, 3276));

sp.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
sp.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spStateChanged(evt);
}
});

bd.setBackground(new java.awt.Color(51, 153, 255));
bd.setEditable(true);
bd.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
bd.setForeground(new java.awt.Color(255, 0, 204));
bd.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "4800", "9600" }));
bd.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
bdItemStateChanged(evt);
}
});
bd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bdActionPerformed(evt);
}
});

ok.setBackground(new java.awt.Color(0, 153, 102));
ok.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
ok.setForeground(new java.awt.Color(105, 105, 105));
ok.setText("connect");
ok.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
okStateChanged(evt);
}
});
ok.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okActionPerformed(evt);
}
});

dis.setBackground(new java.awt.Color(204, 204, 255));
dis.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
dis.setText("disconnect");
dis.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
disActionPerformed(evt);
}
});

lon.setBackground(new java.awt.Color(153, 204, 255));
lon.setEditable(false);
lon.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
lon.setForeground(new java.awt.Color(255, 0, 102));
lon.setText(" ");
lon.setBorder(new javax.swing.border.MatteBorder(null));
lon.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
lonActionPerformed(evt);
}
});

lat.setBackground(new java.awt.Color(153, 204, 255));
lat.setEditable(false);
lat.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
lat.setForeground(new java.awt.Color(255, 51, 102));
lat.setText(" ");
lat.setBorder(new javax.swing.border.MatteBorder(null));
lat.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
latActionPerformed(evt);
}
});

utc.setBackground(new java.awt.Color(153, 204, 255));
utc.setEditable(false);
utc.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
utc.setForeground(new java.awt.Color(255, 0, 102));
utc.setText(" ");
utc.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
utc.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
utcActionPerformed(evt);
}
});

jLabel4.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
jLabel4.setText("UTC");

jLabel3.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
jLabel3.setText("latitude");

jLabel2.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
jLabel2.setText("longitude");

jLabel1.setFont(new java.awt.Font("Sylfaen", 2, 18)); // NOI18N
jLabel1.setForeground(new java.awt.Color(255, 51, 51));
jLabel1.setText("COM");

jLabel5.setFont(new java.awt.Font("Tahoma", 2, 18)); // NOI18N
jLabel5.setForeground(new java.awt.Color(255, 51, 51));
jLabel5.setText("baudrate");

jLabel6.setIcon(new javax.swing.ImageIcon("C:\\Users\\DJ ROCKS\\Desktop\\ship(1).png")); // NOI18N
jLabel6.setText(" ");

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap(113, Short.MAX_VALUE)
.addComponent(jLabel6)
.addGap(130, 130, 130))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(84, 84, 84)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(sp, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(8, 8, 8)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(jLabel2)
.addComponent(jLabel4))
.addGap(25, 25, 25)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(utc, javax.swing.GroupLayout.DEFAULT_SIZE, 366, Short.MAX_VALUE)
.addComponent(lat, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 366, Short.MAX_VALUE)
.addComponent(lon, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 366, Short.MAX_VALUE)))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(66, 66, 66)
.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(bd, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(78, 78, 78)
.addComponent(ok)
.addGap(72, 72, 72)
.addComponent(dis)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap(33, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lon, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addGap(39, 39, 39)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(lat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(38, 38, 38)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(utc, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(38, 38, 38))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel6)
.addGap(64, 64, 64)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(sp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGap(46, 46, 46)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(bd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))
.addGap(50, 50, 50)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(dis)
.addComponent(ok))
.addGap(153, 153, 153))
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(44, 44, 44)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);

pack();
}// </editor-fold>


private void okActionPerformed(java.awt.event.ActionEvent evt) {

if(evt.getSource()==ok)
{
bul=true;
if(new communication().bul1==false)
{
JOptionPane.showMessageDialog(test2,"GPS CONNECTE");

}
//System.out.print(bd.get);
timer = new Timer();
timer.schedule(new RemindTask(), 1);

}

}

private void okStateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
}

private void latActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void disActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//
if(evt.getSource()==dis)
{
bul=false;
JOptionPane.showMessageDialog(test2,"GPS DISCONNECTE");


}
}

private void bdActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

}

private void lonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void spStateChanged(javax.swing.event.ChangeEvent evt) {

sp=(JSpinner) evt.getSource();
v= sp.getValue();
}

private void bdItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
String all=(String)bd.getSelectedItem();
}

private void utcActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

class RemindTask extends TimerTask {
public void run() {
try {

data();

} catch (UnsupportedCommOperationException ex) {
Logger.getLogger(test2.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(test2.class.getName()).log(Level.SEVERE, null, ex);
} catch (TooManyListenersException ex) {
Logger.getLogger(test2.class.getName()).log(Level.SEVERE, null, ex);
}

}

}
public static void main(String args[])
{
java.awt.EventQueue.invokeLater(new Runnable() {


public void run() {
test2 i=new test2();

System.out.println(i.getBackground());
i.setTitle("VESSEL POSITION SYSTEM");

i.setVisible(true);
i.setDefaultCloseOperation(EXIT_ON_CLOSE);
i.transferFocus();
}
});
}
// Variables declaration - do not modify
public javax.swing.JComboBox bd;
private javax.swing.JButton dis;
private javax.swing.JDialog jDialog1;
private javax.swing.JDialog jDialog2;
private javax.swing.JDialog jDialog3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
public javax.swing.JTextField lat;
public javax.swing.JTextField lon;
private javax.swing.JButton ok;
public static javax.swing.JSpinner sp;
public javax.swing.JTextField utc;
// End of variables declaration
}

错误

Exception in thread "Timer-0" java.lang.ArrayIndexOutOfBoundsException: 1
at vpspro.test2.data(test2.java:75)
at vpspro.test2.access$900(test2.java:31)
at vpspro.test2$RemindTask.run(test2.java:463)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)

最佳答案

这行似乎是问题所在:-

a1=s[1].split("\\*",0);

因为此代码片段 s=aa.com().split("\\$",0); 似乎仅将 1 元素返回到字符串数组s

因此,s[1] 抛出 ArrayIndexOutOfBoundsException

关于java - 程序运行时出现ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15715293/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com