0

2つのクラスがあります

ファーストクラスは

 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
 import java.util.ArrayList;

 import java.util.Collections;

public class Hieracrhy  
{

    ArrayList<Tutor> Tutor_person=new ArrayList<Tutor>();
    public static void main(String[] args) 
    {
        Hieracrhy obj=new Hieracrhy();
        obj.start();
    }

    public void start()
    {
        getDetails();
        System.out.println(Tutor_person);
    }

    //Function to read the songs from the file
    void getDetails()
    {
        try 
        {
            File file=new File("SongsList.txt");//Represents a file
            FileReader fileReader=new FileReader(file);//FileReader connects to a text file
            BufferedReader reader=new BufferedReader(fileReader);//For Efficient reading of file

            // We use String variable to hold each line when the line is read one-by-one
            String line=null;

            //Read a line of the string and assign it to a string if it is not null just  doo the func
            while((line=reader.readLine())!= null)
            {
                addDetails(line);
            }
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }
    void addDetails(String lineToParse)
    {
        String[] tokens=lineToParse.split("/");
        Tutor nextPerson=new Tutor(tokens[0]);
        Tutor_person.add(nextPerson);
    }
}

今、別のクラスがあります

import java.util.ArrayList;


public class Tutor 

{

    int Tutor_id;
    String Tutor_name;
    String Tutor_place;
    int Tutor_age;

    public void Set_Things_for_Tutor(int Tutor_id,String Tutor_name,String Tutor_place,int Tutor_age)
    {
        this.Tutor_id=Tutor_id;
        this.Tutor_name=Tutor_name;
        this.Tutor_place=Tutor_place;
        this.Tutor_age=Tutor_age;

    }

    public int getuserid()
    {
        return Tutor_id;
    }
    public String getname()
    {
        return Tutor_name;
    }
    public String getdesignation()
    {
        return Tutor_place;
    }
    public int getage()
    {
        return Tutor_age;
    }
}

これで、テキストファイルに入力があります

11/devrath/hassan/22 

しかし、完全なセットアップを実行すると、エラーが発生します

コンストラクターtutor(string)は未定義です

このエラーの理由は何ですか.....誰かがこれに関する良いi/pで私を助けることができます

ありがとう

4

6 に答える 6

4

コンストラクターtutor(string)は未定義です

エラーはすべてを物語っています。引数として文字列を受け入れるTutorクラスにはコンストラクターがありません。

public Tutor {
//instance vars

public Tutor(String s){
//assign s to appropriate member variable
}

}

ところで、家庭教師クラスのデザインは悪いようです。コンストラクターでインスタンスメンバーを初期化します(これを行うことを目的としています)。現在、メソッドでチューターの状態を初期化しています。コンストラクターで初期化することをお勧めします。

于 2013-03-15T10:58:27.890 に答える
3

「String」パラメーターを使用してコンストラクターを定義していないため、JVMはコンストラクターを見つけることができません。

コンストラクターを次のように定義します。

public Tutor(String name)
{
     //Do required initialization here
}
于 2013-03-15T11:02:12.623 に答える
1

クラスのインスタンスを作成すると、コンストラクターが呼び出されます

MyClass obj = new MyClass();

これはデフォルトのコンストラクターを呼び出します

public MyClass(){}

ただし、パラメーター化されたコンストラクターを作成していないため、JVM自体が作成します。

ただし、コンストラクターにパラメーターを渡したい場合

MyClass obj = new MyClass(someInteger,someString);

この場合、パラメーター化されたコンストラクターを既に作成しているため、JVMはデフォルトのコンストラクターを作成しません。

public MyCLass(int someInteger,String someString){}

あなたの場合、コンストラクターを作成していないため、JVMはデフォルトのコンストラクターのみを作成します

public MyClass(){}

つまり、パラメーター化されていないコンストラクターだけですが、アクセスしようとしているのはパラメーター化されたコンストラクターです

したがって、あなたがしなければならないのは、あなたが作成しているオブジェクトを持つクラスにパラメータ化されたコンストラクタを作成することです...

あなたの場合

public Tutor(String string) {
    System.out.println("add the code to initialize the class parameters here");
}
于 2013-03-15T11:08:29.593 に答える
1

クラスで名前を変更Set_Things_for_Tutorする必要があると思います。そして、文字列を削除します。TutorTutorvoid

于 2013-03-15T10:59:16.880 に答える
1

クラスには、パラメーターとしてStringを受け入れるコンストラクターがありませTutorん。クラスで文字列を渡したい場合はTutor、これをコードに追加します

public class Tutor{
  //Other member variables
  public Tutor(String yourString){
     //Do some initializations
  }

}
于 2013-03-15T11:05:27.423 に答える
1

呼び出し元のコードには1つの引数コンストラクターがあり、呼び出されたコード(Tutor)クラスには1つの引数コンストラクターがありません。

コンストラクターを追加

public Tutor (String str)
{
     //do your initialization here about 'str' variable.
}
于 2013-03-15T11:30:33.437 に答える