1

「学生」オブジェクトを取得し、その名前、キャリア、教室がパラメーターと属性に依存しているかどうかを判断するように設計された、Java で小さな並べ替えプログラムを作成しています。しかし、最初のオブジェクトを作成しようとすると、問題が発生します。これまでのところ、すべてが次のようになっています。

public class Student {
    private String name, classroom;
    /**
     * The career code is as follows, and I quote:
     * 0 - Computer Science
     * 1 - Mathematics
     * 2 - Physics
     * 3 - Biology
     */
    private short career, idNumber;

    public Student (String name, short career, short idNumber){
        this.name = name;
        this.classroom = "none";
        this.career = career;
        this.idNumber  = idNumber;
    }

    public static void main(String args[]){
        Student Andreiy = new Student("Andreiy",0,0);
    }
}

オブジェクト作成行でエラーが発生します。これは、コンストラクターが short を呼び出すときに何らかの理由で 0,0 を整数として解釈することを主張し、不一致の問題を引き起こすためです。

何か案は?

4

2 に答える 2

2

short1 つの方法は、値がキャストを使用していることをコンパイラに伝えることです。

Student Andreiy = new Student("Andreiy",(short)0,(short)0);

または、 の代わりにStudent受け入れるクラスを再定義します。(キャリア コー​​ドについては、 を使用することをお勧めします。)intshortenum

于 2012-09-25T04:21:34.547 に答える
0

Integer を short に変換する必要があります。整数から短整数への変換にはナローイングが必要なため、明示的なキャストが必要です。メモリの制約がある限り、Java では整数を使用する必要があります。

public Student (String name, Career career, int idNumber)

//Enumeration for Career so no additional checks are required.
 enum Career
 {
     Computer_Science(0),Mathematics(1),Physics(2),Biology(3);
     private Career(int code)
     {
         this.code = code;
     }
     int code ;

     public int getCode()
     {
         return code;
     }

 }

そして、以下のようなことができます

new Student("Andreiy", Career.Computer_Science, 0);
于 2012-09-25T04:44:18.380 に答える