• 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

Object Storage Arubacloud
0 głosów
881 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ź 106 wizyt
pytanie zadane 12 listopada 2015 w C i C++ przez Luna Cognita Dyskutant (8,130 p.)
0 głosów
2 odpowiedzi 964 wizyt
0 głosów
2 odpowiedzi 184 wizyt
pytanie zadane 23 stycznia 2023 w C i C++ przez Dani Obywatel (1,450 p.)

92,655 zapytań

141,545 odpowiedzi

319,983 komentarzy

62,024 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...