2016-07-22 4 views
0

STudentクラスからprint()を呼び出すにはどうすればよいですか? Student test = new Student()を作成しようとしましたが、コンストラクタの型を指定の型に適用できないことがわかります。他のクラスから非静的メソッドを印刷できません

Netbeansで発生するエラーは、必須文字列、文字列、文字列、文字列、int、int、int、intです。 引数が見つからない 実際の引数とフォーム引数の長さが異なります。

public class Roster {  

    print_all(); 

} 

public static void print_all(){ 
    testStudents.stream().forEach((w) -> { 
     Student.print(); 
    }); 
} 



public class Student { 

    public Student(String id, String firstName, String lastName, String email, int age, int grade01, int grade02, int grade03) 
     public void print() { 
      System.out.println("Student ID: " + 
       getId() + "\t First Name: " + 
       getFirstName() + "\t Last Name: " + 
       getLastName() + "\t Age: " + 
       getAge() + "\t Grades: " + 
       getGradesArray() 
      ); 
    } 
} 
+0

これはおそらく誤りであるあなたは 'Student'オブジェクトを初期化しようとします。もしそうなら、あなたのID、名前などを格納するためのコンストラクタとメンバ変数がないからです。 – ragingasiancoder

+0

関連:["非静的メソッドは、静的コンテキスト "エラー](http://stackoverflow.com/q/4922145/217324)。それに加えて、あなたはコンストラクタが何であるか、そしてコンストラクタを定義する方法に問題があるように思えます。 –

答えて

0

私はNetBeansで取得エラーが必要な文字列、列、列、列、int型、int型、int型、int型です。実際の引数は見つからず、引数の長さも異なります。

これは、新しい生徒をインスタンス化しようとしているが、パラメータを渡していないためです。あなたはパラメータなしで新しい学生を作成することができるようにしたい場合は、このように、新しい空のコンストラクタを実装する必要があります。

public Student() { 

} 

と私はあなたがStudentクラスのaswellの属性を逃していると思いますが、それがあなたのクラス全体であるかどうかわかりません。それらを実装し、Eclipseを使用している場合は、toString()メソッドのオーバーライドを生成することができます。このメソッドは、基本的に必要な操作を行い、情報を画面に出力します。

それは次のようになります。

@Override 
public String toString() { 
    return "Student [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email 
      + ", age=" + age + ", grade1=" + grade1 + ", grade2=" + grade2 + ", grade3=" + grade3 + "]"; 
} 
関連する問題