2017-11-23 4 views
-1

私はまだオブジェクト指向プログラミングのnoobですので、Main.javaでこの行を実行する方法を尋ねます:Student.displayInfo(students);静的修飾子をメソッドと変数、条件文は激しく反応します。それをどうやるか教えてくれますか?Javaで競合するフィールドを持つすべての生徒の情報を表示する方法

Main.java

import java.util.Scanner; 
public class Main { 
    public void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     Student[] students = new Student[3]; 
     for (Student student : students) { 
      System.out.println("Can you code: (y/n) "); 
      student.canCode = (in.next().charAt(0) == 'y' || in.next().charAt(0) == 'Y'); 
     } 
     Student.displayInfo(students); 
    } 
} 

Student.java

public class Student { 
    boolean canCode = false; 

    public boolean getCodingSkill() { 
     return canCode; 
    } 
    public void displayInfo(Student [] students) {  
     for (Student student : students) { 
      if (getCodingSkill()) 
       System.out.println("I can code."); 
      else System.out.println("I can't code."); 

      System.out.println("\n===================="); 
     } 
    } 
} 
+0

[mcve]を読み、それに応じて質問を強化してください。 「激しく反応する」は、何が起こっているのかを私たちに教えてくれません。 – GhostCat

+0

メソッド 'displayInfo'に' static'を追加するとどうなりますか? – newOne

+0

@newOne条件文のエラーは、非静的変数canCodeを静的コンテキストから初期化できないことを示します。 –

答えて

0

私が正しくあなたの質問を理解している場合、これは私の答えのようになります。

StudentDetails.java:

package TrialPrograms; 


public class StudentDetails { 
    private static String firstname = ""; 
    private static String lastname = ""; 
    private static boolean cancode = false; 
    private static boolean iscoding = false; 

    public void setFname(String name) { 
    this.firstname=name; 
    } 

    public String getFname() { 
     return this.firstname; 
    } 

    public void setLname(String name) { 
     this.lastname=name; 
     } 

     public String getLname() { 
      return this.lastname; 
     } 

    public void setCanCode(boolean cancode) { 
     this.cancode=cancode; 

    } 
    public boolean getCanCode() { 
     return this.cancode; 

    } 
    public void setIsCoding(boolean iscoding) { 
     this.iscoding=iscoding; 

    } 
    public boolean getIsCoding() { 
     return this.iscoding; 

    } 

    public void displayInfo(){    
     System.out.println("Student Records"); 
     System.out.println("=========================================================");   
     //for (Student student : students) { 
      System.out.println("Name: " + firstname+ " " + lastname); 
      if (cancode==true) { 
       if (iscoding==true) { 
        System.out.println(firstname + " is coding!!!"); 
       } 
       else System.out.println(firstname + " can code."); 
      } 

      System.out.println("\n========================================================="); 
     } 
    } 

Main.java:

package TrialPrograms; 


import java.util.Scanner; 


class Main extends StudentDetails{ 

    public static void main(String[] args) { 

     StudentDetails stud = new StudentDetails(); 
     Scanner in = new Scanner(System.in); 
     int noofstudents=3; 

     for (int i=1;i<=noofstudents;i++) { 
      System.out.println("Please enter your first name: "); 
      stud.setFname(in.next()); 
      System.out.println("Please enter your last name: "); 
      stud.setLname(in.next()); 
      System.out.println("Can you code: (y/n) "); 
      if (in.next().charAt(0) == 'y' || in.next().charAt(0) == 'Y') { 
       stud.setCanCode(true); 
       System.out.println("Are you coding right now: (y/n) "); 
       if(in.next().charAt(0) == 'y' || in.next().charAt(0) == 'Y') { 
        stud.setIsCoding(true); 
       }else { 
        stud.setIsCoding(false); 
       } 
      }else { 
       stud.setCanCode(false); 
      } 
      System.out.println("Loop is over"); 
      stud.displayInfo(); 
     } 
     in.close(); 

    } 
} 

希望するとこのコードはあなたの質問に答えます。

関連する問題