0

私はこのプログラムに何時間も取り組んできましたが、プログラムが実際にスコア テキスト ファイルから成績を印刷する方法がわかりません。

public class Assign7{
  private double finalScore;
  private double private_quiz1;
  private double private_quiz2;
  private double private_midTerm;
  private double private_final;
  private final char grade;

  public Assign7(double finalScore){
    private_quiz1 = 1.25;
    private_quiz2 = 1.25;
    private_midTerm = 0.25;
    private_final = 0.50;

       if (finalScore >= 90) {
           grade = 'A';
       } else if (finalScore >= 80) {
           grade = 'B';
       } else if (finalScore >= 70) {
           grade = 'C';
       } else if (finalScore>= 60) {
           grade = 'D';
       } else {
           grade = 'F';
       }
}


  public String toString(){
    return finalScore+":"+private_quiz1+":"+private_quiz2+":"+private_midTerm+":"+private_final;

  }
} 

このコードはこれと同様にコンパイルされます

import java.util.*;
import java.io.*;

public class Assign7Test{
  public static void main(String[] args)throws Exception{

  int q1,q2;
  int m = 0;
  int f = 0;
  int Record ; 
  String name;

    Scanner myIn = new Scanner( new File("scores.txt") );

    System.out.println( myIn.nextLine() +"  avg  "+"letter");

   while( myIn.hasNext() ){
      name = myIn.next();
      q1 = myIn.nextInt();
      q2 = myIn.nextInt();
      m = myIn.nextInt();
      f = myIn.nextInt();
       Record myR = new Record( name, q1,q2,m,f);
       System.out.println(myR);

      }
    }

public static class Record {

       public Record() {
       }

       public Record(String name, int q1, int q2, int m, int f)
       { 

       } 
   } 
}

コードをコンパイルしたら、これを取得します。これは、score.txt にある数値を正確に計算しません 名前 quiz1 quiz2 中期 最終 平均 手紙

Assign7Test$Record@4bcc946b

Assign7Test$Record@642423

Exception in thread "main" java.until.InputMismatchException    
    at java.until.Scanner.throwFor(Unknown Source)    
    at java.until.Scanner.next(Unknown Source)    
    at java.until.Scanner.nextInt(Unknown Source)        
    at java.until.Scanner.nextInt(Unknown Source)    
    at Assign7Test.main(Assign7Test.java:25)
4

3 に答える 3

4

例外はさておき、実際にtype のオブジェクトを印刷していますRecord。あなたがする必要があるtoString()のは、オブジェクトの適切な表現を提供するためにオーバーライドすることです。

@Override
public String toString() {
    return "Something meaningful about your Record object.";
}

nextLine()また、 inを使用してスキャナーを進めていることにも注意してくださいSystem.out.println('...')。コードからその部分をコメントアウトすることをお勧めします。

于 2012-07-03T21:16:13.700 に答える
0

レコードを次のように変更します

public static class Record {  
    String name;
    int q1;
    int q2;
    int m;
    int f;

    public Record() {}         
    public Record(String name, int q1, int q2, int m, int f) {
        // here you save the given arguments localy in the Record.
        this.name = name;
        this.q1 = q1;
        this.q2 = q2;
        this.m = m;
        this.f = f;
    }
@Override
public String toString(){
   //here you write out the localy saves variables.
   //this function is called when you write System.out.println(myRecordInstance);
   System.out.println(name + ":" + q1 + ":" + q2 + ":" + m + ":" + f);
}

}

機能: レコードを作成して引数を保存する必要があります。System.out.println(myRecordInstance); を使用する場合は、さらに toString メソッドをオーバーライドする必要があります。代わりに、レコードに文字列を返す別の関数を記述し、この関数の戻り値を次のように出力System.out.println(myRecordInstace.writeMe());できます。次に、関数をレコードに追加する必要があります。

public String writeMe(){
System.out.println(name + ":" + q1 + ":" + q2 + ":" + m + ":" + f);
}
于 2012-07-10T15:08:24.223 に答える
0

このエラーが発生する理由は、整数を期待しているにもかかわらず、スキャナが次に読み取るものが数値ではないためです。

また、これをレコードの toString に入れて、アドレスの出力を停止します。

すなわち

public static class Record {

   public Record() {
   }

   public Record(String name, int q1, int q2, int m, int f)
   { 

   }
    public String toString(){}//print out stuff here.

}

于 2012-07-03T21:17:57.453 に答える