无法正确打印数字

时间:2015-10-26 22:52:59

标签: java arrays formatting

对于我目前的编程项目,我应该格式化我的testOne& testTwo喜欢" 000"。虽然平均值应该是" 000.0"。我使用DecimalFormat无济于事。此外,对于我的letterGradeArray,即使字母等级在实际数组中,该字母也不会显示。这是我的代码:

import java.util.Scanner;
//import java.text.NumberFormat;
import java.text.DecimalFormat;

public class GradeArray 
{

@SuppressWarnings({ "unused", "resource" })
public static void main(String[] args)
 {
     //Setup all the variables
     Scanner scan = new Scanner(System.in);
     int[] testOne = new int[4]; // Students’ test one grades
     int[] testTwo = new int[4]; // Students’ test two grades
     double[] average = new double[4]; // Students’ average grades
     double z = 002.00;
     char letterGrade = 0;
     char[] letterGradeArray = new char[4];
     DecimalFormat fmt1 = new DecimalFormat("000");
     DecimalFormat fmt2 = new DecimalFormat("000.0");

     //Begin asking for scores
     System.out.println("For test 1,");
     for (int i=0;i<testOne.length;i++)
     {
         System.out.print("Enter score " + (i + 1) + ":");
         testOne[i] = scan.nextInt();
         fmt1.format(testOne[i]);
     }
     System.out.println("\nFor test 2,");
     for (int i=0;i<testTwo.length;i++)
     {
         System.out.print("Enter score " + (i + 1) + ":");
         testTwo[i] = scan.nextInt();
         fmt1.format(testTwo[i]);
     }
     //Compute average                      
     for(int i=0;i<average.length;i++)
     {
            {
               average[i] = (testOne[i]+testTwo[i])/z;
               fmt2.format(average[i]);
            } 
     }
     //Compute letter grade
     for(int i=0;i<average.length;i++)
     {
         if (average[i]>= 90 ) 
            {
             letterGrade = 'A';
            } else if (average[i] >= 80) {
                letterGrade = 'B';
            } else if (average[i] >= 70) {
                letterGrade = 'C';
            } else if (average[i] >= 60) {
                letterGrade = 'D';
            } else {
                letterGrade = 'F';
            }
            //Put the letterGrade into the letterGradeArray
            for(int x=0;i<letterGradeArray[x];x++)
            {
                letterGradeArray[x]=letterGrade;
            } 

     }
     //Print it out      
     System.out.println("Test 1     Test 2     Average     Grade");
     System.out.println("______     ______     _______     _____");
     System.out.println(testOne[0] + "         " + testTwo[0] + "         " + average[0] +"         " + letterGradeArray[0]);
     System.out.println(testOne[1] + "         " + testTwo[1] + "         " + average[1] +"         " + letterGradeArray[1]);
     System.out.println(testOne[2] + "         " + testTwo[2] + "         " + average[2] +"         " + letterGradeArray[2]);
     System.out.println(testOne[3] + "         " + testTwo[3] + "         " + average[3] +"         " + letterGradeArray[3]);
 }
}

如果有人对如何使这个代码清洁有任何想法,请告诉我,我觉得所有的fors它是笨重的。

1 个答案:

答案 0 :(得分:0)

您正在呼叫fmt1.format(testOne[i]);,但您没有对结果做任何事情。调用format会返回一个String,它不会影响作为参数传递的内容,因此当您稍后打印testOne[0]等时,您将打印普通的原始值。

如果您需要格式化的值,则必须将.format()的返回值指定为某个值,并将其保留,然后将打印为原始整数值。例如,按照其余代码的工作方式进行图案处理......

String[] formattedOne = new String[4];
// ... later
formattedOne[i] = fmt1.format(testOne[i]);
// ... still later
System.out.println(formattedOne[0] + "    " ..........