无法满足格式错误的规范

时间:2015-11-15 00:13:16

标签: java

系统:

.out.println("For test 1,");
    for (int i = 0; i < testOne.length; i++)
    {
      System.out.print("Enter score " + (i + 1) + ": ");
      testOne[i] = keyboard.nextInt();
    }
    System.out.println();

    System.out.println("For test 2,");
    for (int i = 0; i < testTwo.length; i++)
    {
      System.out.print("Enter score " + (i + 1) + ": ");
      testTwo[i] = keyboard.nextInt();
    }
    for (int i = 0; i < average.length; i++)
    {
      average[i] = ((testOne[i] + testTwo[i]) / 2.0D);
      if (Double.doubleToLongBits(average[i]) > Double.doubleToLongBits(90.0D)) {
        grade[i] = 'A';
      } else if (Double.doubleToLongBits(average[i]) > Double.doubleToLongBits(80.0D)) {
        grade[i] = 'B';
      } else if (Double.doubleToLongBits(average[i]) > Double.doubleToLongBits(70.0D)) {
        grade[i] = 'C';
      } else {
        grade[i] = 'F';
      }
    }
    System.out.println();
    System.out.println("Test 1\tTest 2\tAverage\tGrade");
    System.out.println("------\t------\t-------\t-----");
    for (int i = 0; i < testOne.length; i++) {
      System.out.println(testFormat.format(testOne[i]) + "\t" + testFormat.format(testTwo[i]) + "\t" + averageFormat.format(average[i]) + "\t" + grade[i]);
    }
  }
}
The output looks like this:
Test 1  Test 2  Average Grade
------  ------  ------- -----
089 098 093.5   A
097 085 091.0   A
094 096 095.0   A
078 073 075.5   C

 What I need:
 Test 1 Test 2  Average Grade
 ------ ------  ------- -----
 089    098     093.5   A
 097    085     091.0   A
 094    096     095.0   A
 078    073     075.5   C

我想知道的是,是否有人可以帮我解决阻止我完成该计划的格式问题?我需要将数字放入正确的列和类别,因为这是规范要求的。任何有关简单格式问题的帮助都会很棒并且非常感激。

2 个答案:

答案 0 :(得分:0)

您可以使用填充:

String columnName = "Test 1";
int columnLength = column.length;
System.out.println(String.format("%1$-" + columnLength + "s", value));

这为您提供了列标题大小的正确填充。如果这些值是您期望的类型,这应该可以正常工作。如果行值变大,则必须注意宽度是否高于标题宽度。在这种情况下,您可能还需要增加标题之间的空间。

答案 1 :(得分:0)

您需要testFormat.format()averageFormat.format()吗?

删除后:

for (int i = 0; i < testOne.length; i++) {
    System.out.println(testOne[i] + "\t" + testTwo[i] + "\t" + average[i] + "\t" + grade[i]);
}

这是输出:

Test 1  Test 2  Average Grade
------  ------  ------- -----
90      56      73.0    C
95      98      96.5    A
90      98      94.0    A
97      99      98.0    A