0

UniversityDepartment&PolytechnicDepartmentこれらの 2 つのクラスはクラスを拡張しますAcademicDepartment。そして、問題は私がこれをしたいです。AcademicDepartment大学院プログラムと大学院プログラムを持つことができます。部門は 2 University&になりPolytechnicます。学科は、大学院プログラムにある研究室の数に応じて、ポリテクニックまたは大学になります。したがって、私たちが大学院または卒業後のプログラムにいる場合、ユーザーはキーボードから入力する必要があると思います。また、大学院にいる場合は、ポリテクニックまたは大学にいるかどうかを確認するためにいくつのラボを取得したかを尋ねなければなりません. それで、私はこれをどのようにしますか?私のコードの例を示します。

import java.io.*;

public class  AcademicDepartment {
    private String names;
    private String labs;
    private int teachers;
    private int graduates;
    // private boolean studies;

    public void infostudies() throws IOException{
        System.out.println("Enter the department you want."
            + "Press 1 for pre-graduate program  or 2 for after-graduate program" );  
        String studies = "";  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        studies = br.readLine(); 

        if (studies == 1){
            System.out.println("You are in pre-graduate program");
            System.out.println("Enter the number of labs");
            String labs = ""; 
            BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
            labs = br1.readLine();

            if (labs > 5){
                System.out.println("The department is polytechnic");
            }
        }        

        if (labs < 5 ){
            System.out.println("The department is University");
        }
        else
        {
            System.out.println("Wrong number try again");
        }
    }    

    public AcademicDepartment(String names,String labs,int teachers,int graduates){
        names = new String(names);
        this.labs = labs;
        this.teachers = teachers;
        this.graduates = graduates;
    }

    public void printdepartmentinfo(){
        System.out.println("The names are:" + names);
        System.out.println("The labs are:" + labs);
        System.out.println("The GRADUATES are:" + graduates);
        System.out.println("The teachers are:" + teachers);   
    }
}
4

1 に答える 1

0

コードにはいくつかの残念な点があります。

studies問題の 1 つは、文字列変数とlabs整数リテラルを比較していることです。これはコンパイラによって許可されていません。通常、( を使用して) String 変数を String リテラルと比較するか、整数と比較する前にString.equalsString 変数を解釈しようとします。Integer.parseInt

もう 1 つの問題は、メソッドにローカルな一部の変数infostudiesが class のフィールドと同じ名前を持つことAcademicDepartmentです。それは許されますが、不必要に混乱を招きます。

例として、 variable を扱いますが、 variablestudiesに関して私が何を意味するかを示しますlabs

これをしないでください:

public class AcademicDepartment {
    ...
    public void infostudies() throws IOException {
        ...
        if (studies == 1) {
            ...
            String labs = "";
            ...
            if (labs > 5){ // Compare String with int? Won't compile!
                ...
            }
            ...
        }
        if (labs < 5) { // Can't see the "labs" defined above!
            ...
        }
        ...
    }
}

これを行う:

public class AcademicDepartment {
    ...
    public void infostudies() throws IOException {
        ...
        if (studies == 1) {
            ...
            String labs = "";
            ...
            try {
                   int labCount = Integer.parseInt(labs);
                   if (labCount > 5) {
                       System.out.println("The department is polytechnic");
                   } else {
                       System.out.println("The department is University");
                   }
            } catch (NumberFormatException formatErr) {
                System.out.println("Sorry, couldn't understand your number of labs.");
            }
            ...
        }
        ...
    }
}
于 2013-03-17T17:56:48.200 に答える