1

わかりました、基本的なヘルプが必要です。これが私が学ぼうとしているチュートリアルです(http://docs.oracle.com/javase/tutorial/java/javaOO/classes.html)が、実際にデータを渡す方法について混乱しています。問題は、Java を学ぼうとするときに Pascal 脳がオンになっていることです...

これが私のコードです。私は何を間違っていますか?

public class OrigClass{
    public static void main(String[] args){
        StudentData(17, "Jack"); //error here: the method StudentData(int, String) is undefined for the type OrigClass
    }

    public class Student{
        public void StudentData(int age, String name){
            int sAge = age;
            String sName = name;
            System.out.println("Student Name: " + sName + " | Student Age: " + sAge);
        }
    }
}

助けてくれてありがとう:)

4

5 に答える 5

5

コンストラクターは単なるメソッドではありません。クラスと同じ名前を付けて、次のnewように演算子で呼び出す必要があります。

public class Student{
    // Declare the fields that you plan to assign in the constructor
    private int sAge;
    private String sName;
    // No return type, same name as the class
    public Student(int age, String name) {
        // Assignments should not re-declare the fields
        sAge = age;
        sName = name;
        System.out.println("Student Name: " + sName + " | Student Age: " + sAge);
    }
}
// This goes in the main()
Student sd = new Student(17, "Jack");
于 2013-07-24T15:54:42.947 に答える
2

Javaの命名規則Student考慮せずにクラスを正しく記述し、メソッドであると想定している場合、メソッドを呼び出す方法は正しくありません。最初にクラスのオブジェクトを作成してからメソッドを呼び出しますStudentDataStudentDataStudent

更新: Student が内部クラスであることを考慮すると

 public static void main(String[] args){
    new OrigClass().new Student().StudentData(17, "Jack");// Considering Student is inner class
  }
于 2013-07-24T15:56:02.377 に答える
2

コードにいくつかの問題があります。

まず、通常のメソッドのように StudentData のコンストラクターを定義しました。コンストラクターには戻り値の型がありません。

次に、newキーワードを使用して Java で非プリミティブ オブジェクトを作成する必要があります。

public class OrigClass{
    public static void main(String[] args){
        new Student(17, "Jack"); 
    }
}

public class Student{
   public Student(int age, String name){
       int sAge = age;
       String sName = name;
       System.out.println("Student Name: " + sName + " | Student Age: " + sAge);
   }
}
于 2013-07-24T15:56:19.283 に答える