我有一個csv文件,其中包含nyse中的所有股票報價。第一列是符號第二列是公司的名稱。將csv文件導入java swing表
我有一個使用java swing庫在netbeans中製作的搜索框和表格。
現在,當我在框中輸入名稱時,它將返回正確數量的行。因此,例如,如果我搜索GOOG,它將只返回2行(GOOG代碼爲1行,在公司名稱中爲1行)。但是,行內的數據不是正確的,它只是一遍又一遍地打印csv文件的第一行。這裏是點擊搜索按鈕時被執行的代碼:
package my.Stock;
import java.util.ArrayList;
import java.util.Scanner;
import java.io.BufferedReader;
import java.util.StringTokenizer;
import java.io.FileReader;
import java.io.*;
public class searchy {
public static void doSearch(String s){
javax.swing.JTable resTable = StockUI.stockUI.getResultTable();
javax.swing.table.DefaultTableModel dtm =
(javax.swing.table.DefaultTableModel) resTable.getModel();
while (dtm.getRowCount()> 0) dtm.removeRow(0);
String sym = s.trim().toUpperCase();
try {
//csv file containing data
String strFile = "companylist.csv";
//create BufferedReader to read csv file
BufferedReader br = new BufferedReader(new FileReader(strFile));
String strLine = "";
StringTokenizer st = null;
int lineNumber = 0, tokenNumber = 0;
//create arraylist
ArrayList<String> arrayList = new ArrayList<String>();
//read comma separated file line by line
while((strLine = br.readLine()) != null){
lineNumber++;
//break comma separated line using ","
st = new StringTokenizer(strLine, ",");
while(st.hasMoreTokens()){
//display csv values
tokenNumber++;
arrayList.add(st.nextToken());
//System.out.println("Line # " + lineNumber + ": "+ st.nextToken() + " " + st.nextToken());
} //end small while
//reset token number
tokenNumber = 0;
} //end big while loop
//send csv to an array
Object[] elements = arrayList.toArray();
/*
for(int i=0; i < elements.length ; i++) {
System.out.println(elements[i]);
} */
Scanner input = new Scanner(System.in);
System.out.print("Enter Ticker symbol");
//String sym = input.next().toUpperCase(); //convert to uppercase to match csv
int j=0;
for(int i=0; i < elements.length ; i++) {
if (((String) elements[i]).contains(sym)){
//System.out.println(elements[i]);
dtm.addRow(elements);
j++;
if (j==25) break; //only show this many results
}
}
}
catch(Exception e){
System.out.println("Exception while reading csv file: " + e);
}
}
}
我明白這是爲什麼發生的事情,但我不知道如何告訴它打印正確的行,因爲我不能使用dtm.addRow(元素[I]);
任何幫助,非常感謝。
這種代碼真的很差結構。嘗試封裝邏輯並將您的應用程序分爲模型視圖控制器。當邏輯如此混亂時,很難知道你的問題是什麼。閱讀Wikipedia上的MVC模式:http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller – I82Much 2011-04-05 01:28:32