在循环中打印格式化数组值?

时间:2013-12-09 00:52:59

标签: java

我正在通过一本书自学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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您可以创建一个变量来跟踪销售代表的最后一个值。当它改变时(即在22和33之间),你将打印你的附加行来分隔表。您还可以为总计添加变量,并在更改销售代表的最后一个值时将其重置为零。