我想在不使用opencsv的情况下导入csv文件,并将这些数据存储在集合中。从该集合中抽取任何随机数据并在屏幕上显示。 (仅使用java预定义的包。不是opencsv)
package panellist;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.Random;
import java.util.Set;
public class PanelList {
private static Random r = new Random();
private static int rand;
private static int endRange = 20;
private static List<Integer> randomNumber;
public static void main(String[] args) {
String fileName = "C:\\Users\\Ankit\\Desktop\\Book2.csv";
File file = new File(fileName); // TODO: read about File Names
Scanner scan = new Scanner(System.in);
HashMap map = new HashMap();
ArrayList al = new ArrayList();
int i =0;
try {
Scanner inputStream = new Scanner(file);
while (inputStream.hasNext()){
String data = inputStream.next();
System.out.println("test="+data/*.startsWith("a")*/);
map.put(i++,data);
StringTokenizer st = new StringTokenizer(data,",");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
inputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Printing HashMap:");
System.out.println(map);
endRange = map.size()-1;
for(int j=0;j<endRange;j++){
rand = r.nextInt(endRange);
System.out.println(map.get(r));
}
System.out.println(endRange);
rand = r.nextInt(endRange);
do
{
rand = r.nextInt(endRange);
}
while(randomNumber.contains(rand));
randomNumber.add(rand);
Object x= randomNumber.get(randomNumber.size()-1);
System.out.println(x);
}
}
答案 0 :(得分:1)
简短回答:不要这样做。
答案很长:
如果我们正在谈论“学校作业是关于编写自己的CSV解析器”;然后我建议:花一些时间学习 CSV文件可以让你惊喜的许多潜在内容。然后你可以看看其他人是如何解决这些问题的。比你坐下而要做的第一件事就是要意识到简单地对','进行标记就不会这样做(到目前为止)。
(你知道,有一个原因为什么大多数人都喜欢用这个事业 - 那就是:不是一件容易的事情)