Can't pass methods in main
I wrote a class with some methods to for txt checkIsFile, read how many lines are there, put in an array and print the array, and it works fine.
package myProva;
import java.io.*;
import java.util.StringTokenizer;
import java.util.*;
import java.text.SimpleDateFormat;
public final class FileImport {
private File fileToImport;
private Date[] dateArray;
private double[][] dataArray;
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
I call these methods in main class
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(122, 122, 122)
.addComponent(LoadDataButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(229, 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
I would like to add the following methods and call in main but I do not know how to do, can anybody help me?
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]);
}
}
}
Thanks all.
PS txt file is as follows:
4887 20100406 6250.01 6265.32 6214.18 6252.21 29445700 4888 20100407 6248.37 6256.4 6208.52 6222.41 28689600 4889 20100408 6199.94 6207.14 6138.02 6171.83 30684300
You have an object which you have to call on. I assumes its the same one you are discarding.
ProvaJFrame pjf = new ProvaJFrame();
pjf.buildDateArray(someData);
pjf.setVisible(true);
You can declare the methods as static so that they can be called from main
. Like so:
public static void buildDataArray(String[][]d){
// ...snip...
}
精彩评论