2013-12-09 4 views
1

Я изучаю Java самостоятельно, используя книгу, и у меня есть диаграмма, которую я должен повторить, найдя значения массива и цикл для отображения из текстового файла. У меня есть все поля печати просто отлично, но я не могу их отделить?Печать значений массива форматирования в цикле?

enter image description here

У меня есть представление о том, что тоже делают, но это просто не делать то, что я хочу ..

public static void main(String[] args) { 
    Scanner input = null; 
    File empFile = new File("employeesSalesRep.txt"); 
    String[][] empArray = new String[9][6]; 

    try { 
     input = new Scanner(empFile); 
     for (int outer = 0; input.hasNext() == true; ++outer) { 
      for (int inner = 0; inner < empArray[outer].length; ++inner) { 
       empArray[outer][inner] = input.next(); 
      } 

      if (empArray[0][4].equals("22")) { 

      } 


     } 
    } 

    catch (FileNotFoundException e) { 
     System.out.println("Cannot find file. File must be in your PROJECT folder!"); 
     System.out.println("System out print: " + e.getMessage()); 
     System.err.println(e.getMessage()); 
     System.exit(0); 
    } 

    finally { 
     input.close(); 
    } 

    System.out.printf("%-13s", "Emp #"); 
    System.out.printf("%-13s", "Last Name"); 
    System.out.printf("%-13s", "First Name"); 
    System.out.printf("%-13s", "MI"); 
    System.out.printf("%-13s", "Sales Rep"); 
    System.out.printf("%-13s", "Commision"); 
    System.out.println(); 
    System.out.printf("%-13s", "---------"); 
    System.out.printf("%-13s", "---------"); 
    System.out.printf("%-13s", "-----------"); 
    System.out.printf("%-13s", "---------"); 
    System.out.printf("%-13s", "----------"); 
    System.out.printf("%-13s", "-----------"); 
    System.out.println(); 

    for (int x = 0; x < empArray.length; ++x) { 

     if (empArray[x][0] == null) 
      break; 

     for (int i = 0; i < empArray[x].length; ++i) { 
      System.out.printf("%-13s", empArray[x][i]); 
     } 
     System.out.println(); 
    } 
} 

мне не нужен прямой ответ. Только в каком-то направлении. Дайте мне часть, чтобы скомпоновать мой код, и я сделаю все остальное. Я действительно хочу это узнать.

(также любая помощь в поиске, как накопить суммы было бы здорово!)

Спасибо.

Редактировать:
Я вычислил часть форматирования. Но теперь у меня возникают проблемы, накапливающееся значение ...

enter image description here

+0

Как выглядит ваш текущий выход? –

+0

проверить. Выяснено форматирование –

+0

Если форматирование точно такое же, почему бы просто не отсканировать всю строку и не распечатать систему, если она не начинается с 'Emp #'. Это самый простой способ сделать это. Нет необходимости в массивах :) –

ответ

0

Почему вы не просто печатать строку за строкой, а не хранить в массивах и получить общий путь расщепления и используя последний индекс, чтобы добавить вверх;

double total = 0; 

while (input.hasNextLine()){ 
    String line = input.nextLine(); 

    if ("".equals(line)){ 
     System.out.println(); 
    } else { 
     String[] split = line.split("\\s+"); 
     total += Double.parseDouble(split[5].trim()); // last index 
     System.out.println(line); 
    } 

    System.out.println("-- Total for ALL SALES " + total); 
} 
0

Вы можете создать переменную, чтобы отслеживать последнее значение торгового представителя. Когда он изменяется (т. Е. Между 22 и 33), вы должны распечатать дополнительные строки для разделения таблицы. Вы также можете добавить переменную для total и сбросить ее до нуля, когда вы измените последнее значение торгового представителя.

+1

И чтобы избежать дублирования кода, инициализируйте эту переменную до нуля. Таким образом, заголовки будут напечатаны также во время первой итерации. Таким образом, вы можете избежать дублирования кода, который печатает заголовки. – denarced

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