2014-11-24 3 views
-2

Добрый день, У меня есть. CSV-файл с данными, как показано ниже, я хочу, чтобы иметь возможность искать файл. Файл разделен на Regno, ModuleCode и Mark Mark. как я могу искать файл при поставке с помощью Regno и ModuleCode. Этот файл уникален в том смысле, что нет уникального столбца. Пожалуйста помоги.Чтение из CSV-файла с помощью java

Regno,ModuleCode,ExamMark 
1334599, CE152-4-SP, 54.5 
1332141, CE153-4-AU, 43.8 
1398559, CE162-4-SP, 55.3 
1334667, CE141-4-AU, 51.3 
1335181, CE162-4-SP, 62.5 
1332141, CE154-4-SP, 63.1 
1335167, CE154-4-SP, 43.0 
1365678, CE155-4-SP, 28.9 
1334863, CE155-4-SP, 39.7 
1334703, CE101-4-SP, 56.8 
1335167, CE161-4-AU, 46.9 
1365678, CE153-4-AU, 15.6 
1334718, CE141-4-AU, 61.7 
1394001, CE151-4-AU, 41.4 
1334768, CE163-4-AU, 42.7 
1334863, CE152-4-SP, 46.3 
1334592, CE155-4-SP, 52.7 
1383431, CE161-4-AU, 49.8 
1398559, CE151-4-AU, 54.7 
1334599, CE155-4-SP, 77.6 
1334768, CE101-4-SP, 60.4 
1334599, CE153-4-AU, 71.7 
1383260, CE153-4-AU, 70.3 
1334718, CE153-4-AU, 58.6 
1334863, CE153-4-AU, 29.5 
1334718, CE152-4-SP, 73.7 
1394001, CE101-4-SP, 24.0 
1383260, CE152-4-SP, 55.3 
1374567, CE142-4-AU, 72.1 
1383260, CE151-4-AU, 67.2 
1394001, CE161-4-AU, 72.7 
1398559, CE161-4-AU, 68.6 
1332141, CE151-4-AU, 65.5 
1383260, CE101-4-SP, 64.4 
1334703, CE162-4-SP, 96.4 
1398559, CE142-4-AU, 48.5 
1334768, CE155-4-SP, 37.3 
1332568, CE155-4-SP, 66.9 
1334718, CE154-4-SP, 56.8 
1364569, CE141-4-AU, 62.4 
1334568, CE162-4-SP, 38.3 
1334599, CE161-4-AU, 86.5 
1334667, CE155-4-SP, 31.7 
1334592, CE141-4-AU, 56.2 
1334592, CE152-4-SP, 95.8 
1334568, CE161-4-AU, 25.7 
1383431, CE151-4-AU, 66.2 
1394001, CE155-4-SP, 44.7 
1332141, CE161-4-AU, 57.8 
1332568, CE153-4-AU, 62.0 
1334568, CE164-4-SP, 37.1 
1334718, CE161-4-AU, 86.0 
1354564, CE155-4-SP, 51.3 
1364569, CE154-4-SP, 29.8 
1334768, CE151-4-AU, 22.3 
1383431, CE141-4-AU, 59.0 
1398559, CE163-4-AU, 56.5 
1365678, CE142-4-AU, 43.2 
1374567, CE155-4-SP, 48.5 
1394001, CE153-4-AU, 58.2 
1374567, CE162-4-SP, 47.2 
1354564, CE162-4-SP, 45.6 
1334863, CE141-4-AU, 43.5 
1334667, CE151-4-AU, 44.3 
1394001, CE154-4-SP, 55.0 
1334768, CE164-4-SP, 28.6 
1334568, CE163-4-AU, 32.2 
1394001, CE141-4-AU, 56.6 
1334592, CE154-4-SP, 49.9 
1335181, CE151-4-AU, 78.1 
1365678, CE161-4-AU, 60.0 
1374567, CE152-4-SP, 59.4 
1334599, CE151-4-AU, 68.8 
1334768, CE161-4-AU, 49.8 
1398559, CE164-4-SP, 63.4 
1334863, CE154-4-SP, 20.7 
1364569, CE101-4-SP, 52.1 
1334703, CE142-4-AU, 70.5 
1383260, CE154-4-SP, 61.6 
1334718, CE101-4-SP, 57.6 
1334568, CE142-4-AU, 60.6 
1335167, CE141-4-AU, 52.5 
1334599, CE101-4-SP, 85.3 
1374567, CE151-4-AU, 60.8 
1334568, CE101-4-SP, 34.5 
1334592, CE161-4-AU, 73.1 
1332141, CE152-4-SP, 62.5 
1365678, CE151-4-AU, 44.8 
1335167, CE152-4-SP, 64.5 
1398559, CE101-4-SP, 60.5 
1383431, CE152-4-SP, 63.4 
1383260, CE141-4-AU, 78.5 
1374567, CE101-4-SP, 58.7 
1332568, CE101-4-SP, 59.7 
1365678, CE101-4-SP, 40.5 
1334703, CE155-4-SP, 70.2 
1335167, CE101-4-SP, 56.1 
1334599, CE154-4-SP, 87.0 
1334718, CE151-4-AU, 62.9 
1332568, CE152-4-SP, 55.6 
1354564, CE161-4-AU, 45.9 
1335167, CE155-4-SP, 30.2 
1334667, CE153-4-AU, 40.8 
1354564, CE163-4-AU, 37.6 
1398559, CE155-4-SP, 41.3 
1334568, CE151-4-AU, 42.2 
1334592, CE101-4-SP, 71.6 
1374567, CE153-4-AU, 77.8 
1335181, CE155-4-SP, 66.5 
1354564, CE151-4-AU, 37.3 
1334667, CE101-4-SP, 31.0 
1383431, CE153-4-AU, 48.2 
1354564, CE142-4-AU, 34.1 
1334599, CE141-4-AU, 67.1 
1383431, CE101-4-SP, 69.7 
1335167, CE153-4-AU, 40.3 
1364569, CE161-4-AU, 60.3 
1383431, CE154-4-SP, 93.3 
1365678, CE152-4-SP, 43.5 
1334703, CE151-4-AU, 69.5 
1383260, CE155-4-SP, 40.0 
1332141, CE141-4-AU, 68.1 
1334718, CE155-4-SP, 52.2 
1335181, CE163-4-AU, 65.2 
1364569, CE155-4-SP, 36.0 
1332568, CE154-4-SP, 66.0 
1334768, CE162-4-SP, 51.7 
1364569, CE151-4-AU, 46.9 
1334863, CE151-4-AU, 37.9 
1334568, CE155-4-SP, 53.8 
1335167, CE151-4-AU, 46.1 
1332568, CE151-4-AU, 71.3 
1354564, CE101-4-SP, 50.9 
1334863, CE161-4-AU, 25.2 
1334703, CE164-4-SP, 45.7 
1334703, CE163-4-AU, 55.0 
1335181, CE142-4-AU, 70.4 
1335181, CE101-4-SP, 70.7 
1334667, CE154-4-SP, 61.3 
1334703, CE161-4-AU, 45.3 
1332568, CE141-4-AU, 62.2 
1374567, CE161-4-AU, 70.4 
1365678, CE162-4-SP, 69.3 
1334768, CE142-4-AU, 52.6 
1394001, CE152-4-SP, 18.9 
1335181, CE164-4-SP, 74.4 
1354564, CE164-4-SP, 48.0 
1332568, CE161-4-AU, 77.2 
1383431, CE155-4-SP, 58.2 
1334592, CE151-4-AU, 69.6 
1335181, CE161-4-AU, 62.9 
1334667, CE161-4-AU, 67.0 
1332141, CE101-4-SP, 95.5 
1364569, CE153-4-AU, 54.5 
1383260, CE161-4-AU, 71.9 

Код:

private void displayCourseModules() throws IOException{ 
    File f= openFile("enrolment.csv"); 
    BufferedReader fr = null; 
    fr = Buffered(fr, f); 

    // fr.i 
    byte len =8; 

    while(len==8) 
    { 
     String h = null; 

     try 
     { 
      h = fr.readLine(); 
     } 
     catch (IOException ex) 
     { 
      System.out.println(ex); 
     } 

     byte length_2= 1; 

     try 
     { 
      String hr[] = h.split(","); 

      hr[0] = hr[0].concat(","); 
      hr[1] = hr[1].concat(","); 
      hr[2] = hr[2].concat(","); 
      hr[3] = hr[3].concat(","); 
      hr[4] = hr[4].concat(","); 
      hr[5] = hr[5].concat(","); 
      hr[6] = hr[6].concat(","); 
      hr[7] = hr[7].concat(","); 
      hr[8] = hr[8].concat(","); 

      enrollmentcolumn0.append(hr[0]); 
      enrollmentcolumn1.append(hr[1]); 
      enrollmentcolumn2.append(hr[2]);  
      enrollmentcolumn3.append(hr[3]); 
      enrollmentcolumn4.append(hr[4]); 
      enrollmentcolumn5.append(hr[5]); 
      enrollmentcolumn6.append(hr[6]);  
      enrollmentcolumn7.append(hr[7]); 
      enrollmentcolumn8.append(hr[8]); 


     } 
     catch(NullPointerException ew) 
     { 
      len=0; 
     } 

    } 

    String enrollmentColumns[] = new String[9]; 

    enrollmentColumns[0]= enrollmentcolumn0.toString(); 
    enrollmentColumns[1]= enrollmentcolumn1.toString(); 
    enrollmentColumns[2]= enrollmentcolumn2.toString();  
    enrollmentColumns[3]= enrollmentcolumn3.toString(); 
    enrollmentColumns[4]= enrollmentcolumn4.toString(); 
    enrollmentColumns[5]= enrollmentcolumn5.toString(); 
    enrollmentColumns[6]= enrollmentcolumn6.toString();  
    enrollmentColumns[7]= enrollmentcolumn7.toString(); 
    enrollmentColumns[8]= enrollmentcolumn8.toString(); 

    String enrollmentColumnArray0[]= enrollmentColumns[0].split(","); 
    String enrollmentColumnArray1[]= enrollmentColumns[1].split(","); 
    String enrollmentColumnArray2[]= enrollmentColumns[2].split(","); 
    String enrollmentColumnArray3[]= enrollmentColumns[3].split(","); 
    String enrollmentColumnArray4[]=enrollmentColumns[4].split(","); 
    String enrollmentColumnArray5[]= enrollmentColumns[5].split(","); 
    String enrollmentColumnArray6[]= enrollmentColumns[6].split(","); 
    String enrollmentColumnArray7[]= enrollmentColumns[7].split(","); 
    String enrollmentColumnArray8[]= enrollmentColumns[8].split(","); 
    // System.out.printf(enrollmentColumnArray8[0]+"hi"); 

    double yearmark1[]= new double[9]; 
    byte se = 0; 

    for(int a=0;a<=enrollmentColumnArray8.length;a++) 
    { 

     try 
     { 

      if(enrollmentColumnArray0[a].equals(registrationNumber)) 
      { 
       counter=1; 
       System.out.println("________________________________________"); 
       System.out.println("List of Modules"); 

       System.out.println("Module Code\t\tModule Name\t\t\t\t\t\tCourseWorkMark\tExamMarks"); 

       System.out.println(enrollmentColumnArray1[a]+"\t\t"+getModuleName(enrollmentColumnArray1[a])+"\t\t\t\t"+ getCourseWorkMark(registrationNumber,enrollmentColumnArray1[a])+"\t\t"+getExamMark(registrationNumber,enrollmentColumnArray1[a])+"\t\t"+moduleMark(getExamMark(registrationNumber,enrollmentColumnArray1[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray1[a]))); 
       //yearmark1[0] =Double.parseDouble(moduleMark(getExamMark(registrationNumber,enrollmentColumnArray1[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray1[a]))); 
       // if(yearmark1[0]>=40) 
       // { 
       se++; 
       // } 

       System.out.println(enrollmentColumnArray2[a]+"\t\t"+getModuleName(enrollmentColumnArray2[a])+"\t\t\t\t"+ getCourseWorkMark(registrationNumber,enrollmentColumnArray2[a])+"\t\t"+getExamMark(registrationNumber,enrollmentColumnArray2[a])+"\t\t"+moduleMark(getExamMark(registrationNumber,enrollmentColumnArray2[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray2[a]))); 
       // yearmark1[1] =Double.parseDouble(moduleMark(getExamMark(registrationNumber,enrollmentColumnArray2[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray2[a]))); 
       // if(yearmark1[1]>=40) 
       // { 
       se++; 
       // } 

       System.out.println(enrollmentColumnArray3[a]+"\t\t"+getModuleName(enrollmentColumnArray3[a])+"\t\t\t\t"+ getCourseWorkMark(registrationNumber,enrollmentColumnArray3[a])+"\t\t"+getExamMark(registrationNumber,enrollmentColumnArray3[a])+"\t\t"+moduleMark(getExamMark(registrationNumber,enrollmentColumnArray3[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray3[a]))); 
       // yearmark1[2] =Double.parseDouble(moduleMark(getExamMark(registrationNumber,enrollmentColumnArray3[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray3[a]))); 
       // if(yearmark1[2]>=40) 
       // { 
       se++; 
       // } 

       System.out.println(enrollmentColumnArray4[a]+"\t\t"+getModuleName(enrollmentColumnArray4[a])+"\t\t\t\t"+ getCourseWorkMark(registrationNumber,enrollmentColumnArray4[a])+"\t\t"+getExamMark(registrationNumber,enrollmentColumnArray4[a])+"\t\t"+moduleMark(getExamMark(registrationNumber,enrollmentColumnArray4[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray4[a]))); 
       // yearmark1[3] =Double.parseDouble(moduleMark(getExamMark(registrationNumber,enrollmentColumnArray4[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray4[a]))); 
       // if(yearmark1[3]>=40) 
       // { 
       se++; 
       // } 

       System.out.println(enrollmentColumnArray5[a]+"\t\t"+getModuleName(enrollmentColumnArray5[a])+"\t\t\t\t"+ getCourseWorkMark(registrationNumber,enrollmentColumnArray5[a])+"\t\t"+getExamMark(registrationNumber,enrollmentColumnArray5[a])+"\t\t"+moduleMark(getExamMark(registrationNumber,enrollmentColumnArray5[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray5[a]))); 
       // yearmark1[4] =Double.parseDouble(moduleMark(getExamMark(registrationNumber,enrollmentColumnArray5[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray5[a]))); 
       // if(yearmark1[4]>=40) 
       // { 
       se++; 
       // } 

       System.out.println(enrollmentColumnArray6[a]+"\t\t"+getModuleName(enrollmentColumnArray6[a])+"\t\t\t\t\t\t"+ getCourseWorkMark(registrationNumber,enrollmentColumnArray6[a])+"\t\t"+getExamMark(registrationNumber,enrollmentColumnArray6[a])+"\t\t"+moduleMark(getExamMark(registrationNumber,enrollmentColumnArray6[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray6[a]))); 
       // yearmark1[5]=Double.parseDouble(moduleMark(getExamMark(registrationNumber,enrollmentColumnArray6[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray6[a]))); 
       // if(yearmark1[5]>=40) 
       // { 
       se++; 
       // } 

       System.out.println(enrollmentColumnArray7[a]+"\t\t"+getModuleName(enrollmentColumnArray7[a])+"\t\t\t\t\t"+ getCourseWorkMark(registrationNumber,enrollmentColumnArray7[a])+"\t\t"+getExamMark(registrationNumber,enrollmentColumnArray7[a])+"\t\t"+moduleMark(getExamMark(registrationNumber,enrollmentColumnArray7[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray7[a]))); 
       // yearmark1[6] =Double.parseDouble(moduleMark(getExamMark(registrationNumber,enrollmentColumnArray7[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray7[a]))); 
       // if(yearmark1[6]>=40) 
       // { 
       se++; 
       // } 

       System.out.println(enrollmentColumnArray8[a]+"\t\t"+getModuleName(enrollmentColumnArray8[a])+"\t\t\t\t"+ getCourseWorkMark(registrationNumber,enrollmentColumnArray8[a])+"\t\t"+getExamMark(registrationNumber,enrollmentColumnArray8[a])+"\t\t"+moduleMark(getExamMark(registrationNumber,enrollmentColumnArray8[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray8[a]))); 
       // yearmark1[7] =Double.parseDouble(moduleMark(getExamMark(registrationNumber,enrollmentColumnArray8[a]), getCourseWorkMark(registrationNumber,enrollmentColumnArray8[a]))); 
       // if(yearmark1[7]>=40) 
       // { 
       se++; 
       // } 



      } 
     } 
     catch(Exception e) 
     { 
      // System.out.println(e); 
     } 
    } 

    yearmark1[8]= java.lang.Math.round((yearmark1[0]+yearmark1[1]+yearmark1[2]+yearmark1[3]+yearmark1[4]+yearmark1[5]+yearmark1[6]+yearmark1[7])/8); 
    System.out.println("YearMark: "+yearmark1[8]); 
    System.out.println("No of Modules Which the student has achieved a pass mark of 40% or more. : "+se); 
} 

private String getExamMark(String studentRegistrationNo1,String moduleCode1) throws IOException 
{ 
    File f= openFile("examMarks.csv"); 
    BufferedReader fr = null; 
    fr = Buffered(fr,f); 
    int he; 
    // byte len =1; 
    String line = null; 
    int len=63; 
    while (len==63) 
    { 
     // line = fr.readLine(); 
     // CharBuffer e = null; 

     try { 
      // info = in.readLine(); 
      h = fr.readLine(); 

      // sb.append(h); 
     } 
     catch (IOException ex) { 
      System.out.println(ex); 
     } 

     byte length_2= 1; 

     // r[i]=h; 
     try{ 
      r= h.split(","); 

      // System.out.println(r.length); 

      // r[0] = r[0].concat(","); 
      // r[1] = r[1].concat(","); 
      //r[2] = r[2].concat(","); 
      examMark= r[0]; 
      // System.out.println(r[0]); 

      sb.append(r[0]); 
      sb.append(","); 
      rb.append(r[1]); 
      rb.append(","); 
      fb.append(r[2]); 
      fb.append(","); 
      // System.out.println(r[0]); 

      // System.out.println(a[0]); 
      // r[0]= r[0].concat(","); 
     } 
     catch(NullPointerException e){ 
      len=0; 
     } 

    } 

    // System.out.println(r.length); 
    examRegno = sb.toString(); 
    examModulecode = rb.toString(); 
    examMark = fb.toString(); 
    // System.out.println(examRegno); 

    // System.out.println(examRegno); 
    String examRegnoArray[]= examRegno.split(","); 
    //System.out.println(examRegnoArray.length); 
    String examModulecodeArray[]= examModulecode.split(","); 

    // System.out.println(examModulecodeArray[5]); 
    String examMarkArray[]= examMark.split(","); 
    // System.out.println(examRegnoArray.length); 
    // System.out.println(examMarkArray[154]); 
    try 
    { 
     for(int i=0;i<=examMarkArray.length;++i) 

     if((examRegnoArray[i+9].equals(studentRegistrationNo1) && examModulecodeArray[i+9].equals(moduleCode1))){ 
      return ((examMarkArray[i+1])); 
     } 

     // return examRegnoArray.length+""; 

    } 
    catch(Exception e) 
    { 
     // System.out.println(e); 
     // JOptionPane.showMessageDialog(null,e); 
    } 

    // System.out.println("hi"); 
    // System.out.println(examModulecode); 
    // System.out.println(examMark); 
    return null; 
} 
+1

Вы можете перебирать каждую строку файла, если значения в текущей строке совпадают с теми, которые вы ищете ... – brso05

+0

Можете ли вы опубликовать какой-то код, что вы пробовали, например? – Thierry

+1

Почему бы не разобрать файл сначала с существующей библиотекой и итерацией на сгенерированные объекты? –

ответ

0

Проблема вы представили показывает важную деталь, которая на самом деле приходит в много строительных баз данных проблем.

Нет уникальной колонки.

Рассмотрение списка, который вы указали, подтверждает, что на самом деле ни один столбец 1, ни столбец 2 не могут использоваться в качестве ключа индивидуально.

Однако, поскольку нет уникальной колонки, не означает, что у вас нет никакой возможной клавиши. Два не уникальных столбца могут использоваться как ключ вместе, как compound key, который представляется возможным с предоставленным вами списком.

Другими словами, если у вас есть как RegNo, так и ModuleCode, эти карты имеют уникальное значение.

Например, ключ 1334599 CE152-4-SP будет отображаться на 54.5 однозначно.

Существует коллекция, которая позволяет обрабатывать ключи и их значения, которые вы должны использовать для реализации этого.

+0

Что коллекция –

+0

@ Igho-GodwinAvweroswoAdeshola [Список коллекций] (https://docs.oracle.com/javase/tutorial/collections/interfaces/index.html) – Compass

+0

что коллекция –

0

Это должно делать то, что вы ищете:

public static void main(String[] args) { 
    String regno = "", moduleCode = "", examMark = ""; 
    String row; 
    try { 
     Scanner csvFile = new Scanner(new File("test.csv")); 
     csvFile.nextLine(); // skip first line 
     while (csvFile.hasNextLine()) { 
      row = csvFile.nextLine(); 
      String[] fields = row.split(", "); 
      regno = fields[0]; 
      moduleCode = fields[1]; 
      examMark = fields[2]; 

      if (regno.equals("1334599") && moduleCode.equals("CE152-4-SP")) { 
       System.out.println(examMark); 
      } 
     } 
    } catch (FileNotFoundException ex) { 
     System.out.println(ex); 
    } 
} 

Если вы хотите, чтобы пользователь, чтобы иметь возможность поставить «Regno» и значение «ModuleCode», то вы можете получить ввод от пользователя для тех, 2 и поместить их в оператор if.

+0

он не работал, вы запустили код –

+0

thks для тестирования –

+0

yes Я изменил его на examMarks.csv –

Смежные вопросы