2016-02-22 13 views
0

Я задал этот вопрос, прежде чем я не получил ответ, который я ожидал. Поэтому я открыл этот новый вопрос.Loop in csv file

Моя попытка:

String fileName = "placements.csv"; 
     try { 
      // Assume default encoding. 
      FileWriter fileWriter = new FileWriter(fileName); 

      // Always wrap FileWriter in BufferedWriter. 
      BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); 
      // First row, write the head of the csv file. 
      bufferedWriter.write(FILE_HEADER); 
      bufferedWriter.newLine(); 
      // Increase the begin date 1 seconds until test end date. 
      int seconds = 0; 
      Calendar cal = Calendar.getInstance(); 
      cal.setTime(beginDate); 
      for (int j = 0; j < convertedDifference; j++) { 
      for (Job currentJob : NEHCalculator.sequenceOrderListofJobs()) { 

       int times = (int) ((convertedDifference/currentJob.getInterval()) * testDevices()); 

       for (int i = 0; i < currentJob.getNeededTestTime() * times; i++) { 

       cal.add(Calendar.SECOND, 1); 
       beginDate.getTime(); 
       // write the test date 
       bufferedWriter.write(String.valueOf(cal.getTime())); 
       bufferedWriter.write(";"); 
       bufferedWriter.write(String.valueOf(seconds)); 
       bufferedWriter.write(";"); 
       bufferedWriter.write(currentJob.getJobname()); 
       bufferedWriter.write(";"); 
       bufferedWriter.newLine(); 
       }// end of currentjob loop 
       seconds++; 
      }// end first for loop 
      } 
      bufferedWriter.close();// Always close files. 

     } catch (IOException ex) { 
      System.out.println("Error writing to file '" + fileName); 
     } 
} 

Первый цикл for (int j = 0; j < convertedDifference; j++): ограничить свою программу до даты испытания конца. Если я введу 1 час тестового времени, я ожидаю увидеть номер 0 до 3599 секунд.

Second for loop for (Job currentJob : NEHCalculator.sequenceOrderListofJobs()): Я хочу протестировать все устройства в списке.

Для третьего цикла for (int i = 0; i < currentJob.getNeededTestTime() * times; i++): Я ожидал, что испытаю первую работу currentJob.getNeededTestTime() * times times.

Например, у меня есть 1 час тестового времени и интервал работы в кулак составляет 15 минут, и он проверяет 2 устройства и проверяет необходимое время на 2 секунды. Таким образом, выход должен быть:

Mon Feb 22 12:59:59 CET 2016;0;WAF5-H; 
Mon Feb 22 13:00:00 CET 2016;1;WAF5-H; 
Mon Feb 22 13:00:01 CET 2016;2;WAF5-H; 
Mon Feb 22 13:00:02 CET 2016;3;WAF5-H; 
Mon Feb 22 13:00:03 CET 2016;4;WAF5-H; 
Mon Feb 22 13:00:04 CET 2016;5;WAF5-H; 
Mon Feb 22 13:00:05 CET 2016;6;WAF5-H; 
Mon Feb 22 13:00:06 CET 2016;7;WAF5-H; 
Mon Feb 22 13:00:07 CET 2016;8;WAF5-H; 
Mon Feb 22 13:00:08 CET 2016;9;WAF5-H; 
Mon Feb 22 13:00:09 CET 2016;10;WAF5-H; 
Mon Feb 22 13:00:10 CET 2016;11;WAF5-H; 
Mon Feb 22 13:00:11 CET 2016;12;WAF5-H; 
Mon Feb 22 13:00:12 CET 2016;13;WAF5-H; 
Mon Feb 22 13:00:13 CET 2016;14;WAF5-H; 
Mon Feb 22 13:00:14 CET 2016;15;WAF5-H; then it will continue with second job until end of the job list. 

Однако выход из моего кода:

Mon Feb 22 12:59:59 CET 2016;0;WAF5-H; 
Mon Feb 22 13:00:00 CET 2016;0;WAF5-H; 
Mon Feb 22 13:00:01 CET 2016;0;WAF5-H; 
Mon Feb 22 13:00:02 CET 2016;0;WAF5-H; 
Mon Feb 22 13:00:03 CET 2016;0;WAF5-H; 
Mon Feb 22 13:00:04 CET 2016;2;WAF5-H; 
Mon Feb 22 13:00:05 CET 2016;2;WAF5-H; 
Mon Feb 22 13:00:06 CET 2016;2;WAF5-H; 
Mon Feb 22 13:00:07 CET 2016;2;WAF5-H; 
Mon Feb 22 13:00:08 CET 2016;2;WAF5-H; until Mon Feb 22 17:55:08 CET 2016;7082;WAF5-H; 

Это совершенно неправильно, и я провожу действительно так Су много времени, но мне не удалось с этой задачей. Может кто-то, пожалуйста, помогите мне.

С наилучшими пожеланиями,

+0

Может быть, вы должны спросить лучший вопрос. Или задайте вопрос вообще. Неясно, в чем проблема или что вы пытаетесь сделать. –

+0

@JonathonReinhart код, приведенный выше, является моим кодом, а первый вывод - ожидаемым, а второй - фактическим результатом, который генерируется мной. Целью является достижение ожидаемого результата. Проблема: почему второй столбец записывается с таким же числом много раз, и цикл не работал со вторым заданием. – limonik

ответ

1

Что об изменении этого кода

bufferedWriter.write(String.valueOf(seconds));

для этого:

bufferedWriter.write(String.valueOf(cal.get(Calendar.SECOND)));

Я думаю, что это может работать

+0

с этим изменением, переменные секунды написаны верно. Я создал тестовый пример до 1 часа тестирования, но программа написана до пн 22 февраля 18:28:36 CET 2016; 17969; WAF5-H; Переменная секунд записывается до 17969. Однако преобразованное различие составляет 3600 секунд. – limonik

+0

Что вы ожидаете от третьего столбца? – tumisma

+0

Второй столбец (не третий) дает информацию о секундах, и когда я делаю 1-часовое тестирование, я ожидал увидеть результат 0 до 3599. Но он записывает результат до 17969. Как-то это for (int j = 0; j limonik