2017-02-10 6 views
0

私は1から4の範囲をクリックすると、それぞれがクラスに導かれ、その機能を実行するようにスイッチを使用しようとしています。 "1"を選択すると、ユーザーはID、名前、他の名前とマークを入力し、その平均を計算する必要があります。 2番目のクラスは、すべての情報を表示する必要があり、私はそれを行う方法がわかりません。ここでjava複数のクラスに問題がある

は私のメインのコードです:ここでは

public class lab3q1 { 

    public static void main (String args[]){ 

     Scanner sc = new Scanner(System.in); 

     Entries entriesobject = new Entries(); //object declaration 
     display displayobject = new display(); //object declaration 
     displayall displayallobject = new displayall(); //object declaration 
     sortdata sortdataobject = new sortdata(); 

     System.out.println("1. Add new entries: "); 
     System.out.println("2. Display an entry: "); 
     System.out.println("3. Display all entries: "); 
     System.out.println("4. Sort Data: "); 
     System.out.println("5. Exit: "); 
     int s = sc.nextInt(); 

     switch(s){ 

       case 1:{ 
        if(s==1) 
        try{ 
         entriesobject.method0(); 
        } 
        catch(Exception e){ 
         System.out.println("You can't do that"); 

        } 
       } 
       case 2:{ 
        if(s==2){ 
         try{ 
         displayobject.method(); 
         } 
         catch(Exception e){ 
          System.out.println("You can't do that"); 
         } 
        } 

       } 

       case 3:{ 
        if(s==3){ 
         try{ 
         displayallobject.method2(); 
        } 
         catch(Exception e){ 
          System.out.println("You can't do that"); 
         } 
        } 
       } 
       case 4:{ 
        if(s==4){ 
         try{ 
          sortdataobject.method3(); 
         } 
          catch(Exception e){ 
           System.out.println("You can't do that"); 
        } 
        } 
       } 
       case 5:{ 
        if(s==5){break;} 
       }    
    } 
    } 
} 

は最初のクラスです:

public class Entries {  
    public void method0(){   
     int total=0,total2; 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter the student id: "); 
     int id = sc.nextInt(); 
     sc.nextLine(); 
     System.out.println("Enter the student name: "); 
     String name = sc.nextLine(); 
     System.out.println("Enter the student other names: "); 
     String othername = sc.nextLine(); 

     for(int i=1;i<=4;i++){ 

     System.out.println("Enter the student marks" +(i)); 
     int mark = sc.nextInt(); 
     total += mark; 
     total2 =total/4; 
     System.out.println("The average marks is: "+total2); 
     }   
    }  
} 

そして、ここでは私の第二のクラスです:

public class display { 
    public void method() {    
     int n;   
     Scanner sc = new Scanner(System.in); 
     System.out.println("Here is the student id: ");   
    }  
} 

あなたは私ができる見ることができるようにそれらをリンクしているようだ。

+0

申し訳ありません私はクリックを意味しませんでした、私はタイプを意味しました。 –

+1

申し訳ありませんが、恐ろしい恐ろしいコードです。私たちがあなたを助けるために時間を費やすことを望むので、ソースコードを人間が読めるように適切に書式設定/インデントするために5分を費やしてください。あなたがチェック例外をスローすることができるなら、** try ** catchだけを使用してください。あなたは盲目的にtry/catchを止めないでください。もっと重要なのは、あなたが**間違ったことを伝えているから**あなたが捕まえた例外を印刷することです**。ちょうどエラーをキャッチし、単に「何らかのエラー」を表示しても何の助けにもなりません! – GhostCat

+0

@GhostCatコメントに追加するには、自分のやっていることを反映するようにメソッドに名前を付けます。あなたが良い名前を見つけることができない場合は、実際に何をすべきか再考する必要があります。 – Philippe

答えて

0

あなたの質問に答えるために:

public class Student { 
    private int id; 
    ... methods to put a value into id 

    public int getId() { return id; } 

、その後、いくつかの他:異なるクラスは、あなたのようなことにアクセスする方法を、必要とする(他のオブジェクトのフィールド別名)クラスのデータについて知りたいときクラスにはがもう1つあります。

それを超えて:あなたは「懸念の分離」を間違っています。 クラスはスキャナを使用して、ユーザーからデータを収集します。このクラスは、さまざまなの他のオブジェクトを作成します。これらのオブジェクトにユーザーからのデータを置きます。

すべてクラスにはスキャナーオブジェクトはありません。それらはのデータを、例えばコンストラクタのパラメータとして取得します。

System.out.println("The id is: " + someStudentObject.getId()); 
+0

多くの人が悪い、今自分自身を訂正する –

+0

私はもう少し更新しました。しかし実際のメッセージはここにあります:最初にいくつかのチュートリアル/書籍を勉強してください。あなたのコードは遠隔で何かを行うことから*遠い*です。そして、これは私たちがあなたの手を握って、あなたのコードのより小さな問題と大きな問題のすべてを修正するプログラミング学校ではありません。 – GhostCat

+0

大丈夫だよ –

関連する問題