• 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

VPS Starter Arubacloud
0 głosów
860 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ź 100 wizyt
pytanie zadane 12 listopada 2015 w C i C++ przez Luna Cognita Dyskutant (8,130 p.)
0 głosów
2 odpowiedzi 942 wizyt
0 głosów
2 odpowiedzi 178 wizyt
pytanie zadane 23 stycznia 2023 w C i C++ przez Dani Obywatel (1,420 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...