-3

配列を読み取った後、配列を印刷するのに問題があります。印刷後、配列の値ではなく、メモリのアドレスが印刷されます。そのために何ができますか?

public class MyClass
{
     Student St = new Student();

     Student[]Array1 = new Student[10];


     void AddList()
     {

            Scanner Scan = new Scanner(System.in);

            for (int i=0; i<Array1.length & i<ArrayF1.length; i++)
            {
                System.out.println("Enter Student NAME Number " + (i+1) + ":");
                Array1[i] = new Student();
                Array1[i].setName(Scan.next());


                //System.out.println("Enter Student MARK Number " + (i+1) + ":");
                //St.setMark(Scan.nextFloat());
            }

    }

これが私の印刷方法です。印刷結果はこんな感じ

(studentproject.Student@1a758cb)

 void PrintList()
 {

            for (int i=0; i<Array1.length; i++)
            {

                System.out.println(Array1[i]);

            }
 }

これは私の学生クラスであり、すべてのセッターとゲッターメソッドがあります...したがって、3つのクラスがあります。この3つのクラスをどのように操作すればよいですか。そのうちの1つでデータを取得し、別のクラスでマークデータを印刷します。クラスは学生名データを印刷します...どうすればそれを行うことができますか...私はいくつかのコードを実行しますが、それが正しいかどうかわかりません...あなたの助けに感謝します...

public class Student
{
private String Name;
private float Mark;

/**
 * @return the Name
 */
public String getName() {
    return Name;
}

/**
 * @param Name the Name to set
 */
public void setName(String Name) {
    this.Name = Name;
}

/**
 * @return the Mark
 */
public float getMark() {
    return Mark;
}

/**
 * @param Mark the Mark to set
 */
public void setMark(float Mark) {
    this.Mark = Mark;
}

}
4

2 に答える 2

3

toString()クラスのメソッドをオーバーライドしStudent、インスタンスを出力するときに出力する適切な文字列を返すだけです。

それは次のように見えるかもしれません:-

@Override
public String toString() {
    return "Name: " + studentName;
}

toString()現在、クラスのメソッドのデフォルトの実装Objectが呼び出されており、表示されているのは、そのメソッドから返される形式であり、次の形式です。Type@hashCode

于 2012-12-29T14:51:06.007 に答える
0

toString()ここに、メソッドをオーバーライドする方法をいくつか追加しました

public class Student {

    private String name;
    private int id;
    float mark;

    public Student() {
    }

    public Student(String name, int id) {
        this.name = name;
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public float getMark() {
        return mark;
    }

    public void setMark(float mark) {
        this.mark = mark;
    }

    @Override
    public String toString() {
        return "Student[ID:" + id + ",Name:" + name + ",Mark:"+mark+"]";
    }

    public void printStudentInfo() {
        // print all the details of student
    }
    public static void main(String[] args) {
        Student[] students = new Student[10];
        Scanner scanner = new Scanner(System.in);

        for (int i = 0; i < students.length; i++) {
            System.out.println("Enter Student Name " + (i + 1) + ":");
            String name = scanner.nextLine();
            Student student = new Student(name, i + 1);
            System.out.println("Enter Student MARK Number " + (i + 1) + ":");
            float mark = scanner.nextFloat();
            student.setMark(mark);
            students[i]=student;
        }
        for(Student student:students) {
            // by default toStirng method is called
            System.out.println(student);
            //or you can call like
            //student.printStudentInfo();
        }
    }
}
于 2012-12-29T15:06:26.717 に答える