Професионална програма
Loading...
Yvelichkova avatar Yvelichkova 1 Точки

Въпрос по Java basic

Здравейте,
Срещнах малко затруднение при следната задача:
Имам обект, който ми е масив от n елемента, в случая 4 от тип класа Student и съм ги запълнила с информация.
       Student[] st=new Student[4];
        st[0]=new Student("Ivan",4324,25);
        st[1]=new Student("Ulia",4234,25);
        st[2]=new Student("Petur",343,24);
        st[3]=new Student("Mihaela",432,43);
        System.out.println(Arrays.toString(st));

Искам да принтирам тази информация, но ми принтира адреса от стека.
Благодаря предварително!

Тагове:
0
Java OOP Basics
IvelinTenev avatar IvelinTenev 51 Точки

Подала си името на масива, а не елемент от него. Пробвай:

System.out.println(Arrays.toString(st[0]));

Ако искаш да принтираш всички елементи, ще трябва да обходиш масива с for цикъл примерно.

Поздрави,

Ивелин Тенев

0
Yvelichkova avatar Yvelichkova 1 Точки

В този случай ми подчертава toString, направих override на toString, но отново не се получава.

0
vancho avatar vancho 430 Точки

System.out.println(st[i]); не ти принтира в цикъл?

-1
Yvelichkova avatar Yvelichkova 1 Точки

Принтира ми това 
Student@15db9742
Student@6d06d69c
Student@7852e922

0
vancho avatar vancho 430 Точки

Ами изглежда, като да не си направила overide на toString(). Дай да видя overidе -а .

1
25/10/2016 22:43:52
Yvelichkova avatar Yvelichkova 1 Точки

@Override
    public String toString() {
            return Student.name + " "
                    + " " + Student.fNom +" "
                    + Student.group ;
        } 

Сега ми връща само последния елемен от масива няколко пъти
 st[3]=new Student("Mihaela",432,43); 

public class main {

    public static void main(String[] args)
    {
        Student[] st=new Student[3];
        st[0]=new Student("Ivan",4324,25);
        st[1]=new Student("Ulia",4234,25);
        st[2]=new Student("Petur",343,24);
        st[3]=new Student("Mihaela",432,43);
        print(st);
    }
    public static  void print(Student[] st){
        for(int i=0;i<st.length;i++){
            System.out.println(st[i]);
        }
    }

0
vancho avatar vancho 430 Точки

В toString() имаш 3 параметъра, а в класа Student задаваш 2. На масива му казваш да е от 3 елемента, а му задаваш 4. Нещо не е наред. Я пусни целия код в pastebin да го видя. Че не мога да схвана цялостната картинка.

1
25/10/2016 22:52:48
Yvelichkova avatar Yvelichkova 1 Точки

http://pastebin.com/rPBUhZ7N
Да, това го оправих с големината на масива, но не променя резултата.

0
vancho avatar vancho 430 Точки

Ами пуснах ти кода и ето резултата:


Mihaela  432 43
Mihaela  432 43
Mihaela  432 43
Mihaela  432 43

Process finished with exit code 0

 

Изглежда, че си работи. Пробвай да рестартираш IntelliJ.

1
Yvelichkova avatar Yvelichkova 1 Точки

Това и на мен ми излиза като резултат, проблема е, че искам да ми изпринтира и остналата информация от st[0], st[1] и st[2]. В случая принтира само st[3].

0
vancho avatar vancho 430 Точки

Видях къде е проблема. Преправих ти целят клас Student. Май си нямаш представа от OOП.

 

class Student {

    private String name;
    private int fNom;
    private int group;

    public Student(String name, int fNom, int group) {
        this.setName(name);
        this.setfNom(fNom);
        this.setGroup(group);
    }

    public String getName() {
        return name;
    }

    private void setName(String name) {
        this.name = name;
    }
    
    public int getfNom() {
        return fNom;
    }

    private void setfNom(int fNom) {
        this.fNom = fNom;
    }
    
    public int getGroup() {
        return group;
    }

    private void setGroup(int group) {
        this.group = group;
    }

    @Override
    public String toString() {
        return this.name + " "
                + " " + this.fNom +" "
                + this.group;
    }

 

Сега вече работи. Поздрави!

1
25/10/2016 23:24:53
Yvelichkova avatar Yvelichkova 1 Точки

Имам малка представа, която току-що се наруши...
Много благодаря за отделеното време! :)

0