RegNumber,CE701-7-AU,CE702-7-AU,CE703-7-AU,CE705-7-AU,CE707-7-AU,CE708-7-SP,CE709-7-SP,CE711-7-SP,CE740-7-SP,CE783-7-AU,CE784-7-AU,CE801-7-AU,CE802-7-AU,CE803-7-SP,CE804-7-AU,CE806-7-AU
1234567,51.2,68.2,57.9,62.1,51.2,,77.9,68.2,,,,62.1,,,,
1234568,,51.3,67.2,55.9,,55.1,,,,52.1,62.8,70.9,61.2,,,
1234592,,,62.7,,68.2,,,65.9,60,,,57.1,,62.8,70.9,71.2
1234667,,,,48.5,58.2,,,58.1,51.2,,52.3,,,63.7,61.2,59.2
1234768,52.7,78.2,,,X,55.9,,62.9,,60,,,62.8,,,61.2
1234863,,,35.6,,47.2,,,56.3,50.1,,61.2,52.1,,61.6,44.9,
1235167,,,,57.8,,54.4,78.2,,60.2,,61.2,52.1,,64.5,74.9,
1235181,,78.2,,61.7,,,,59,,62.8,59.1,,,65.4,77.5,61.2
1254564,,,,64,79.3,,X,X,,,83.8,,62.8,,73.9,71.2
1324569,73.1,,,,,77.6,,70.2,82.6,,,90.2,,75.2,71,73.8
1325678,,,45.7,,52.2,,,55.9,60,61.2,,52.1,61.8,,69.9,
1434567,66.5,52.7,55.9,64.2,,62.8,53.9,,61.2,,,,,,,61.2
以上就是CSV 里面的内容, 第一行是 课程代码, 然后就是 每个同学各个课程的分数。 现在我只需要里面的成绩,进行一些运算,,求各位高人指点,如果只读出 里面的成绩 并且 赋值给对应的学生!
1234567,51.2,68.2,57.9,62.1,51.2,,77.9,68.2,,,,62.1,,,,
1234568,,51.3,67.2,55.9,,55.1,,,,52.1,62.8,70.9,61.2,,,
1234592,,,62.7,,68.2,,,65.9,60,,,57.1,,62.8,70.9,71.2
1234667,,,,48.5,58.2,,,58.1,51.2,,52.3,,,63.7,61.2,59.2
1234768,52.7,78.2,,,X,55.9,,62.9,,60,,,62.8,,,61.2
1234863,,,35.6,,47.2,,,56.3,50.1,,61.2,52.1,,61.6,44.9,
1235167,,,,57.8,,54.4,78.2,,60.2,,61.2,52.1,,64.5,74.9,
1235181,,78.2,,61.7,,,,59,,62.8,59.1,,,65.4,77.5,61.2
1254564,,,,64,79.3,,X,X,,,83.8,,62.8,,73.9,71.2
1324569,73.1,,,,,77.6,,70.2,82.6,,,90.2,,75.2,71,73.8
1325678,,,45.7,,52.2,,,55.9,60,61.2,,52.1,61.8,,69.9,
1434567,66.5,52.7,55.9,64.2,,62.8,53.9,,61.2,,,,,,,61.2
以上就是CSV 里面的内容, 第一行是 课程代码, 然后就是 每个同学各个课程的分数。 现在我只需要里面的成绩,进行一些运算,,求各位高人指点,如果只读出 里面的成绩 并且 赋值给对应的学生!
或者去网上找CSVUtil
private final String NULLID = "nullId";
private final String FENGEFU = ","; private String filename = null;
private BufferedReader bufferedreader = null;
private List<String> list = new ArrayList<String>();
public CsvUtil() { } public CsvUtil(String filename) {
try{
this.filename = filename;
bufferedreader = new BufferedReader(new FileReader(filename));
String stemp;
while ((stemp = bufferedreader.readLine()) != null) {
list.add(stemp);
}
} catch(Exception e){
e.printStackTrace();
}
} public List<String> getList() {
return list;
}
/**
* 获得指定列所有信息组成的字符串
* @param index :列数
* @return 所有满足条件的字段组成的字符串,字段间","分割
*/
public String getCol(int index){
StringBuffer sb = new StringBuffer();
if (index>=0){
for (int i=1;i<list.size();i++){
String oneStr = list.get(i);
String[] msg = oneStr.split(FENGEFU);
if (msg.length>index){
sb.append(msg[index]+FENGEFU);
}
}
}
return sb.toString();
}
/**
* 取得指定列里满足 符合id不在yjid[]的记录
* @param 指定列的值 index: yjid :需要去除的行的id
* @return 所有满足条件的字段组成的字符串,字段间","分割
*/
public String getCol(int index ,String[] yjid) {
String reStr = "";
StringBuffer sb = new StringBuffer();
List<String> listTmp = new ArrayList<String>();
if (index >= 0){
for (int i=1;i<list.size();i++){ //一次取得csv中读到的行,跳过第一行 列名
boolean flag = false;
String oneLine = list.get(i);
for (int j=0;j<yjid.length;j++){//取出每一个已记录id
String oneId = yjid[j];
if ("".equals(oneId)){
oneId = NULLID;
}
if (-1 != oneLine.indexOf(oneId)){
flag = true;
}
}
if (!flag){
listTmp.add(oneLine);
}
}
for (int i=0;i<listTmp.size();i++){
String str = listTmp.get(i);
String[] strs = str.split(FENGEFU);
if (strs.length>index){
sb.append(strs[index]+FENGEFU);
}
}
reStr = sb.toString();
}
return reStr;
}
/**
* 取得满足指定条件的条数
* @param index:行数;msg:需满足的条件
* @return Map<String,Integer>保存的是 例如(key=审核卡,value=2的记录;key=手足口病...)
*/
public Map<String, Integer> getRowBy(int index, String msg){
Map<String, Integer> map = new HashMap<String, Integer>();
int rows = 0;
final int NOTFOUNT = -1;
if (!list.toString().equals("[]")) { // 非空文件
for(int i=0;i<list.size();i++){
String str = list.get(i); // 取出一行
String[] words = str.split(FENGEFU);// 分割成数组
if (index < words.length){ // 防止取的列数大于文件的列数
String keyWord = words[index];// 取得所需要比较的列
int n = msg.indexOf(keyWord);
if (NOTFOUNT != n){
if (-1 != msg.indexOf(FENGEFU)){//应访病种的处理
int getNum = 0;
if(null != map.get(keyWord)){//当map中已存该病种,给map的value+1
getNum = map.get(keyWord);
}
map.put(keyWord, getNum+1);
} else{ //其它卡片数的处理
rows+=1;
map.put(keyWord, rows);
}
}
}
}
} else {
// 空文件
}
return map;
}
/**
* 关闭io流
*/
public void CsvClose() {
try {
this.bufferedreader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 得到csv文件的行数
*/
public int getRowNum() {
return list.size();
}
// 得到csv文件的列数
public int getColNum() {
if (!list.toString().equals("[]")) {
if (list.get(0).toString().contains(",")) { // csv文件中,每列之间的是用','来分隔的
return list.get(0).toString().split(",").length;
} else if (list.get(0).toString().trim().length() != 0) {
return 1;
} else {
return 0;
}
} else {
return 0;
}
} // 取得指定行的值
public String getRow(int index) {
if (this.list.size() != 0)
return (String) list.get(index);
else
return null;
} // 取得指定行,指定列的值
// public String getString(int row, int col) {
// String temp = null;
// int colnum = this.getColNum();
// if (colnum > 1) {
// temp = list.get(row).toString().split(",")[col];
// } else if (colnum == 1) {
// temp = list.get(row).toString();
// } else {
// temp = null;
// }
// return temp;
// }
import java.util.ArrayList;import javax.swing.text.html.HTMLDocument.Iterator;public class Part1{
public static void main(String[] argz)
{
CsvUtil s=new CsvUtil("s.csv");
List L=s.getList();
System.out.print(L);
}
}result:java.awt.List[list0,0,0,0x0,invalid,selected=null]
这是对CsvUtil的test,为什么结果出不来,,请高人指点
import java.util.List;