gpt4 book ai didi

java - 将 csv 文件导入 java swing 表

转载 作者:行者123 更新时间:2023-12-01 15:53:26 26 4
gpt4 key购买 nike

我有一个包含纽约证券交易所所有股票报价的 csv 文件。第一列是符号第二列是公司名称。

我有一个使用 java swing 库在 netbeans 中制作的搜索框和表格。

现在,当我在框中输入名称时,它会返回正确的行数。例如,如果我搜索 GOOG,它只会返回 2 行(1 行表示 GOOG 符号,一行表示公司全名中的名称)。然而,行中的数据不是正确的,它只是一遍又一遍地打印 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(elements[i]);

非常感谢任何帮助。

最佳答案

尝试CSVManager .

关于java - 将 csv 文件导入 java swing 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5543540/

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