我有兩個班空指針異常
這個代碼package myProva;
import java.io.*;
import java.util.StringTokenizer;
import java.util.*;
import java.text.SimpleDateFormat;
public class FileImport {
private File fileToImport;
public FileImport(File myFile) {
fileToImport = myFile;
}//constructor for fileToImport field
int lines = 0;
String[][]bin;
public boolean checkIsFile(){
return fileToImport.isFile();
}
public int numberOfLines(){
lines = 0;
if(checkIsFile()){
try{
FileReader fr = new FileReader(fileToImport);
BufferedReader br = new BufferedReader(fr);
while((br.readLine()!=null)){
lines++;
}//end while loop
br.close();
}catch(Exception e){
System.out.println(e);
}
}
else{
System.out.println("There is no file to import");
}
return lines;
}//returns number of lines in a txt file
public void importToArray(){
int rows = 0;
bin = new String[numberOfLines()][6];
try {
FileReader fr = new FileReader(fileToImport);
BufferedReader br = new BufferedReader(fr);
String line = null;
while((line = br.readLine())!= null){
StringTokenizer stk = new StringTokenizer(line, ",");
while(stk.hasMoreTokens()){
for (int cls = 0;cls<6; cls++){
bin[rows][cls]= stk.nextToken();
}
rows++;
}//end inner while loop
}//end outer while loop
br.close();
}//end try
catch(Exception e){
System.out.println(e);
}
}//import data to bin array
public void printArray(){
for(int i =0;i<bin.length; i++){
System.out.printf("%s ", i);
for(int j =0;j<bin[i].length; j++){
System.out.printf("%s ", bin[i][j]);
}
System.out.println("");
}//end for loop
}//print contents of bin array
public String[][] getArray(){
return bin;
}//return bin array
double[][]dataArray = new double [numberOfLines()][5];//Array for double data
Date[]dateArray = new Date[numberOfLines()];//Array for date(calendar)
public void buildDateArray(String[][]d) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//set date format here
for(int i=0;i<d.length; i++){
for(int j = 0;j<d[i].length; j++){
if(j==0){
try{
Date newDate = (Date)sdf.parse(d[i][0]);//parse first column to Date
dateArray[i] = newDate;
}//end try
catch(Exception e){
System.out.println(e);
}//end catch
}
}
}//end for loops
}
public void buildDataArray(String[][]d){
for(int i=0;i<d.length;i++){
for(int j=0;j<d[i].length; j++){
switch(j){
case 0:
dataArray[i][j]=0;
break;
case 1:
dataArray[i][j]=new Double(d[i][j]);
break;
case 2:
dataArray[i][j]=new Double(d[i][j]);
break;
case 3:
dataArray[i][j]=new Double(d[i][j]);
break;
case 4:
dataArray[i][j]=new Double(d[i][j]);
break;
case 5:
dataArray[i][j]=new Double(d[i][j]);
break;
}//end switch
}
}//end for loops
}
public void printDataArray(){
for(int i=0;i<dataArray.length;i++){
for(int j=0;j<dataArray[i].length;j++){
System.out.printf("%s ", dataArray[i][j]);
}
System.out.println("");
}
}
public void printDateArray(){
for(int i=0;i<dateArray.length;i++){
System.out.println(dateArray[i]);
}
}
}
package myProva;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import java.io.*;
public class ProvaJFrame extends javax.swing.JFrame {
/** Creates new form ProvaJFrame */
public ProvaJFrame() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
LoadDataButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
LoadDataButton1.setText("Load Data");
LoadDataButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
LoadDataButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(53, 53, 53)
.addComponent(LoadDataButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(450, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(118, 118, 118)
.addComponent(LoadDataButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(233, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void LoadDataButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new TxtFileFilter());
int returnVal = fileChooser.showOpenDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION){
File myFile = fileChooser.getSelectedFile();
FileImport obj1 = new FileImport(myFile);
System.out.println(obj1.checkIsFile());
System.out.println(obj1.numberOfLines());
obj1.importToArray();
obj1.printArray();
System.out.println("--------------------------------------");
}
}
private class TxtFileFilter extends FileFilter{
public boolean accept(File file){
if(file.isDirectory()) return true;
String fname = file.getName();
return fname.endsWith("txt");
}
public String getDescription(){
return "txt file";
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ProvaJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton LoadDataButton1;
// End of variables declaration
}
無法找出原因我得到NullPointerException
。我還想用主要方法buildDataArray
,printDataArray()
,buildDateArray
和printDateArray()
。
TXT數據導入是遵循
20100415,6286.63,6310.76,6249.74,6291.45,31402600
20100416,6264.65,6305.4,6162.84,6180.9,80519400
20100419,6158.6,6190.86,6140.38,6162.44,38311800
20100420,6193.5,6267.54,6172.57,6264.23,42345100
20100421,6280.54,6281.38,6229.18,6230.38,46312400
謝謝!
你在哪一行得到它? – 2011-03-04 08:09:13
運行: 異常在線程 「AWT-EventQueue的-0」 顯示java.lang.NullPointerException 在myProva.FileImport.checkIsFile(FileImport.java:22) 在myProva.FileImport.numberOfLines(FileImport.java:27) 在myProva .FileImport。(FileImport.java:83) –
2011-03-04 08:11:28
請添加遵循NullPointerException的堆棧跟蹤。 – ordnungswidrig 2011-03-04 08:12:22