2017-02-19 11 views
0

私は、プログラムにデータを入力して試験レポートを作成するプログラムを書いていますが、フォーマットは途切れていて、それが正確には見つかりません。以下に私の結果のスクリーンショットを示します。以下のコードがあり、そのフォーマットはどのようなものかと思われます。 https://gyazo.com/4f4f4d6c43b4e0c3545a48f9e06565b5Javaフォーマットが途中です

/* 
* file : 
* name : 
* course : 
* description: Process input file to print formatted data and summary data 
*/ 

package program04; 

import java.util.Scanner; 

public class Program04 
{ 

// TODO Declare and initialise class variables here 

/** 
* @param args 
*/ 
public static void main(String[] args) 
{ 

    // TODO: Declare and initialise local variables here: 
    // isValid 

    boolean isValid; 

    String patientName; 
    int patientID; 
    String gender; 
    float exam1, exam2, exam3; 
    double avg; 
    String pos_neg; // will always be a color 


    // System.out.println top line of report 
    System.out.println("*~~< Patient Exam Report >~~*"); 
    // System.out.println blank line 
    System.out.println(""); 
    // Name  Pat. M/F Exam1  Exam2  Exam3  AVG Risk Level 
    // ----  ---- --- ----- -----  ----- ----- ---------- 
    // print words 
    // print column headers; 
    System.out.printf("%-12s", "Name"); 
    System.out.printf("%-13s", "Pat."); 
    System.out.printf("%-8s", "M/F"); 
    System.out.printf("%-8s", "Exam1"); 
    System.out.printf("%-8s", "Exam2"); 
    System.out.printf("%-8s", "Exam3"); 
    System.out.printf("%-6s", "AVG"); 
    System.out.printf("%-13s", "Risk Level \n"); 
    // print dashes 
    System.out.printf("%-11s", "----"); 
    System.out.printf("%-12s", "----"); 
    System.out.printf("%-7s", "---"); 
    System.out.printf("%-7s", "----"); 
    System.out.printf("%-7s", "----"); 
    System.out.printf("%-7s", "----"); 
    System.out.printf("%-5s", "----"); 
    System.out.printf("%-12s", "----------\n"); 

    Scanner input = new Scanner(System.in); 

      // Start for loop1 
      for (int i = 0; i < 10; i++) {     

    // input(patientName)/print; 
    patientName = input.next(); 
    System.out.printf("%-12s", patientName); 

    // input(patientID) 
    patientID = input.nextInt(); 
    System.out.printf("%-13s", patientID); 

    // input(gender); 
    gender = input.next(); 
    System.out.printf("%-8s", gender); 

    // input(exam1); 
    exam1 = input.nextFloat(); 
    System.out.printf("%-8.2f", exam1); 

    // input(exam2); 
    exam2 = input.nextFloat(); 
    System.out.printf("%-8.2f", exam2); 

    // input(exam3); 
    exam3 = input.nextFloat(); 
    System.out.printf("%-8.2f", exam3); 


      // Create isValid variable to equal true unless if/else statement fails it changes to false 
      // If true, do nothing... If false, Print "Invalid data" 
    isValid = true;     
    if (1111 <= patientID && patientID <= 9999) { 
    } 
      else { 
     isValid = false; 
    } 
    if (0.00 <= exam1 && exam1 <= 100.00) { 
    } 
      else { 
     isValid = false; 
    } 
    if (0.00 <= exam2 && exam2 <= 100.00) { 
    } 
      else { 
     isValid = false; 
    } 
    if (0.00 <= exam3 && exam3 <= 100.00) { 
    } 
      else { 
     isValid = false; 
    } 

    if (isValid == true) {     
      // Find Average 
      avg = (exam1 + exam2 + exam3)/3; 
      System.out.printf("%-6.2f", avg); 
      // If else statement to decide if average is above X number Print Y 
      if (avg >= 97) { 
       System.out.printf("%-13s", "RED\n"); 
      } else if (avg > 88) { 
       System.out.printf("%-13s", "ORANGE\n"); 
      } 
      else if (avg > 78) { 
       System.out.printf("%-13s", "YELLOW\n"); 
      } 
      else if (avg > 70) { 
       System.out.printf("%-13s", "BLUE\n"); 
      } 
      else { 
       System.out.printf("%-13s", "GREEN\n"); } 
    } 
      else { 
     System.out.println("~~ Invalid data~~\n"); 
    } 
      } // end loop1 

      System.out.println(" "); 
      System.out.println("Summary\n"); 


      System.out.println(" "); 
      System.out.println("*< end of report >*"); 
} 
} 
+0

を書くためのもの? –

+0

私が使用している入力ファイルはinput.dataと呼ばれ、https://gyazo.com/33a83332e1cc5686d4afc2bf27757719 – Devin

答えて

0

あなたがスペースで休憩をパディング、長さ13の列に文字列"RED\n"を左正当化するためにJavaを求めている

System.out.printf("%-13s", "RED\n"); 

を書くとき。結果は"RED\n "であり、次の行の先頭に空白が追加されます。

System.out.printf("%-13s\n", "RED"); 

または別々の行を終了することにより:

あなたはそれが属しているフォーマット文字列に改行を置くことによってこの問題を解決することができ

System.out.printf("%-13s", "RED"); 
System.out.println(); 

あなただけの文字列を追加しているので、行の最後に、あなたは本当にフォーマット文字列を必要としない、とだけ書くことができます:

System.out.println("RED"); 

printlnと言えば、lnprintlnにあるということは、改行が追加されたことを意味します。改行を追加したくない場合は、printがあります。だからではなく、

System.out.println("~~ Invalid data~~\n"); 

のは、おそらく、それは一部の患者名が空白文字をリードしている可能性があり

System.out.println("~~ Invalid data~~"); 
+0

という完全なコピーが貼られています。感謝して問題を修正しました。 – Devin

関連する問題