Как распечатать эти csv-файлы в определенном формате?

#java #loops #csv #split #format

Вопрос:

Я просто пытаюсь распечатать файл csv в формате, показанном ниже. Как мне это сделать?


csv-файл

 history,A,math,B,chemistry,A,geo,C, art,B,literature,A,history,C,physics,A  
 public class readCsv (){  public static void main (String [] args){  String path = "file.csv";  Scanner in = new Scanner (new FileReader (path));  while (in.hasNextLine()){  String string = in.nextLine();  String [] token = string.split(",");  String class = token [0]   token [2]   token [4]   token [6] ;  String grade = token [1]   token [3]   token [5]   token [7];    //prints the output  System.out.print(class   grade);  } }  

Выходной ток

 history math chemistry geo art literature history physics ABACBACA  

Желаемый результат

 History - A Math - B Chemistry - A Geo - C  

и так далее….

Ответ №1:

 String class = token [0]   token [2]   token [4]   token [6] ; String grade = token [1]   token [3]   token [5]   token [7];  

Это твоя проблема. Вы должны создать 2 массива, один для класса и один для оценки. Поскольку класс находится на четных местах, а оценка-на нечетных, вам следует просмотреть массив маркеров и проверить индекс каждого элемента. Если индекс четный, переместите маркер элемента[индекс] в массив классов. Если он нечетный, переместите его в массив оценок. Затем выполните цикл через один из массивов и просто выведите класс[индекс] — Класс[индекс]. Вот какой-то псевдокод.

 Array Class Array Grade  for i=0, i lt; length of array token (token.length?), i    if i % 2 == 0  add token[i] to class  else   add token[i] to grade   for i=0 i lt; length of array grade (or class), i    console.out(class[i] - grade[i]  

Что происходит, так это то, что вы получаете класс массива = [История, математика] и класс массива = [A, B] (примеры значений). Затем вы просматриваете один из массивов, и, поскольку они имеют одинаковую длину, индекс 0 класса массива и индекс 0 класса массива являются историей и A. Затем вы просто распечатываете их.

Ответ №2:

При повторном объединении токенов ( ) запятые будут удалены.

 for (int i = 0; i lt; token.length/2;   i) {  System.out.println(token[2*i]   " - "   token[2*i   1]); }  

println печатает новую строку в конце, и только тогда вы увидите результат.

Каждая пара токенов класса и класса имеет четный/нечетный индекс.