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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.