• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
939 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ź 142 wizyt
pytanie zadane 12 listopada 2015 w C i C++ przez Luna Cognita Dyskutant (8,130 p.)
0 głosów
2 odpowiedzi 1,024 wizyt
0 głosów
2 odpowiedzi 291 wizyt
pytanie zadane 23 stycznia 2023 w C i C++ przez Dani Obywatel (1,450 p.)

93,176 zapytań

142,185 odpowiedzi

321,979 komentarzy

62,506 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1401p. - dia-Chann
  2. 1380p. - Łukasz Piwowar
  3. 1372p. - CC PL
  4. 1370p. - Łukasz Eckert
  5. 1351p. - Tomasz Bielak
  6. 1328p. - Michal Drewniak
  7. 1312p. - Łukasz Siedlecki
  8. 1302p. - rucin93
  9. 1273p. - Adrian Wieprzkowicz
  10. 1232p. - Mikbac
  11. 1181p. - rafalszastok
  12. 1169p. - Grzegorz Aleksander Klementowski
  13. 1155p. - Piotr Aleksandrowicz
  14. 1149p. - Michał Telesz
  15. 1127p. - Mariusz Fornal
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...