• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Problem z tablicą, jako nazwą obiektu w pętli. JAVA

0 głosów
1,138 wizyt
pytanie zadane 14 października 2015 w Java przez Hinaru Początkujący (310 p.)
zamknięte 15 października 2015 przez Hinaru

Witam.

Na pocżatku dodam, że jestem początkujący, więc może to być banalny problem ale nie mogę sobie z nim poradzić.
Zacznę może od tego że pokaże część kodu z którą jest problem:

 

 while(a==1)
 {
 System.out.printl("Podaj imie czlonka rodziny:");
 Scanner odimie = new Scanner(System.in);
 i=odimie.nextInt();;
 
 System.out.printl("Podaj nazwisko czlonka rodziny:");
 Scanner odnazwisko = new Scanner(System.in);
 n=odnazwisko.nextInt();;
 
 System.out.printl("Podaj wiek czlonka rodziny:");
 Scanner odwiek = new Scanner(System.in);
 w=odwiek.nextInt();;
 
 System.out.printl("Podaj pokrewienstwo czlonka rodziny:");
 Scanner odpokrew = new Scanner(System.in);
 p=odpokrew.nextInt();;

 int i;
  int[] rodzina1 = new int[i]; 
 rodzina  rodzina1[i] = new rodzina();
  rodzina1[i].imie = i;
 rodzina1[i].nazwisko = n;
  rodzina1[i].wiek = w;
  rodzina1[i].pokrew =  p;
 i++;

 

Po skompilowaniu w CMD wywala taki błąd:
 

 

Ogólnie w programie, uzytkownik podaje członków swojej rodziny.
Nie wiemy ilu członków rodziny ma użytkownik dlatego nie możemy przydzielić nazw obiektowi samemu, ponieważ obiekt tak jakby twoży uzytkownik.
Proszę o pomoc :)

komentarz zamknięcia: Problem rozwiązany

2 odpowiedzi

+1 głos
odpowiedź 14 października 2015 przez niezalogowany
wybrane 15 października 2015 przez Hinaru
 
Najlepsza

Nie możesz stworzyć tablicy o rozmiarze 0.

int i; // <- w javie i na starcie jest równe 0
int[] rodzina1 = new int[i]; // tworzysz tablicę o rozmiarze 0

 

komentarz 14 października 2015 przez Hinaru Początkujący (310 p.)

Jak zrobie tak to ten sam błąd:

int i=1;
  int[] rodzina1 = new int[i]; 

 

komentarz 14 października 2015 przez Dorion300 Szeryf (90,250 p.)
Po potem indeksuje się od zera.
komentarz 14 października 2015 przez Hinaru Początkujący (310 p.)
Nie do końca rozumiem.
Mógłbyś mi to pokazać w kodzie tak aby działało ? :)
komentarz 15 października 2015 przez niezalogowany

Teraz zobaczyłem, że ty masz klasę o nazwie rodzina, czyli musisz zrobić coś takiego:

int size = 5; // czy tam ile chcesz
rodzina [] rodzina1 = new Rodzina[size]; // tworzenie tablicy wskaźników

przy czym aby móc używać tych klas musisz swtorzyć same obiekty:

for(int i=0;i<size;i++)
 rodzina1[i] = new rodzina();

Przy okazji: zwyczaj nakazuje aby nazwy klas zaczynały się z dużej litery, czyli:

public class Rodzina
{
 ...
}

 

komentarz 15 października 2015 przez Hinaru Początkujący (310 p.)
Dzięki, dziala.
0 głosów
odpowiedź 15 października 2015 przez Hinaru Początkujący (310 p.)

Tak wyglada cały kod programu... Został tylko ten jeden mały błąd:
Kod klassy rodzina:
 

public class rodzina { 
String imie;
String nazwisko;
int wiek;
String pokrew;
 } 

 

Kod klasy moja rodzina:
 

import java.util.Scanner;

public class mojarodzina
{
 public static void main(String args[])         
 { 
 int a;
 String i;
 String n;
 int w;
 String p;
 int l;
 System.out.println("Ilu masz czlonkow rodziny?");
 Scanner ilu = new Scanner(System.in);
 l=ilu.nextInt();;
 for(int c=1; c<=l; c++)
 {
 System.out.println("Podaj imie czlonka rodziny:");
 Scanner odimie = new Scanner(System.in);
 i=odimie.toString();;
 
 System.out.println("Podaj nazwisko czlonka rodziny:");
 Scanner odnazwisko = new Scanner(System.in);
 n=odnazwisko.toString();;
 
 System.out.println("Podaj wiek czlonka rodziny:");
 Scanner odwiek = new Scanner(System.in);
 w=odwiek.nextInt();;
 
 System.out.println("Podaj pokrewienstwo czlonka rodziny:");
 Scanner odpokrew = new Scanner(System.in);
 p=odpokrew.toString();;

 

 int[] rodzinka = new int[c]; 
 rodzina  rodzinka[c] = new rodzina();
  rodzinka[c].imie = i;
 rodzinka[c].nazwisko = n;
  rodzinka[c].wiek = w;
  rodzinka[c].pokrew =  p;

 

 }

 int f;
 for(f=1;f<=l;f++)
 {
 System.out.println("Czlonkowie twojej rodziny to:");
System.out.println(+f+"."+rodzinka[c].imie+" "+rodzinka[c].nazwisko+" "+rodzinka[c].wiek+"LAT"+rodzinka[c].pokrew);
 }
 
 } 
 } 



Proszę o pomoc :)

Podobne pytania

0 głosów
1 odpowiedź 267 wizyt
pytanie zadane 12 listopada 2015 w C i C++ przez Luna Cognita Dyskutant (8,130 p.)
0 głosów
2 odpowiedzi 1,249 wizyt
0 głosów
2 odpowiedzi 533 wizyt
pytanie zadane 23 stycznia 2023 w C i C++ przez Dani Obywatel (1,450 p.)

93,759 zapytań

142,716 odpowiedzi

323,364 komentarzy

63,357 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...