2015-10-26 56 views
0

對於我目前的編程項目我應該格式化我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]); 
} 
} 

如果任何人有關於如何使這個代碼更清潔的任何想法去做告訴我,我覺得所有的維權很笨重。

+0

稍寬;有沒有具體的問題? – lrleon

+0

不添加前導零。 –

回答

0

要調用fmt1.format(testOne[i]);,但你沒有做,結果什麼。調用format返回一個字符串,它不影響作爲參數傳遞的事情,所以當你以後再打印testOne[0]等正在打印的平原,原來,價值觀。

如果你想格式化的值,你將有分配的.format()的東西歸來,保持它周圍,並打印代替原來的整數值。例如,仿照代碼的其餘部分如何工作...

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

謝謝發佈之後,我想到了這一點。儘管如此,我仍然無法讓字母數組工作。 –