Wczytywanie i wyświetlanie tablicy imion

Spis treści

Zadanie

Napisz program, w którym zadeklarujesz i utworzysz pięcioelementową tablicę odpowiedniego typu. W pętli pobierzesz od użytkownika 5 imion i je w niej zapiszesz. Następnie wyświetl na ekranie powiadomienia "Witaj imie_z_tablicy" dla każdego z podanych parametrów.

Rozwiązanie

Tym razem za zadanie otrzymałeś utworzenie tablicę przechowującą 5 elementów typu String . Jej wypełnienia najlepiej było oczywiście dokonać w pętli przy użyciu obiektu Scanner obsługującego strumień wejścia i jego metody nextLine(). Wyświetlenia dokonujemy analogicznie do pobrania danych. Szczególną uwagę należało zwrócić na numery indeksów komórek, aby nie przekroczyć zakresu. Poniżej przykładowy kod programu.

import java.util.Scanner;

public class Tablice{
  public static void main(String[] args){
	  String[] tab = new String[5];

	 Scanner odczyt = new Scanner(System.in);
	 //pobranie danych
	 for(int i=0; i<5; i++)
		 tab[i] = odczyt.nextLine();
	 //wyświetlenie
	 for(int i=0; i<5; i++)
		 System.out.println("Cześć "+tab[i]);
  }
}

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.

Poniżej znajdziesz archiwalne wpisy z czasów, gdy strona była jeszcze hobbystycznym blogiem.

YeeeZooo

W zasadzie wyszło mi to samo ale do wyświetlenia użyłem pętli for each: import java.util.Scanner; import java.io.PrintWriter; public class Petla2 { public static void main(String args[]){ String[] tablica = new String[5]; Scanner odczyt = new Scanner(System.in); //wypełnienie tablicy for(int i=0; i&lt;5; i++){ System.out.println(&quot;podaj imie nr &quot;+(++i)); --i; /* dekrementacja konieczna bo wcześniej ikrementujemy aby nie było komunikatu &quot;Podaj imie nr 0&quot; */ tablica[i] = odczyt.nextLine(); } //wyświetlenie przy użyciu pętli for each for(String x : tablica) System.out.println(&quot;Witaj &quot;+x); } }

Andrzej

nie musisz dawac dekrementacji po ikrementacji - bo zamiast ikrementacji +(++i) mozna dac +(i+1) siedziałem nad tym zadaniem pół dnia bo sie uparłem ze dojde sam i udało sie :)

Szapko

"Tym razem za zadanie otrzymałeś utworzenie tablicę przechowującą 10 elementów typu String." Chyba powinno być: 5 elementów.

Witek

Witam Mam drobny problem z jednym przykładem, chodzi mi o to, że próbuje zapisać imiona z tablicy do pliku, ale jakoś mi nie wychodzi. Próbowałem na różne sposoby, ale plik jest pusty lub wpisuje ostatnie imię, może ktoś podpowiedzieć jak to zrobić, aby zapisać dane z tablicy do pliku. Z góry dziękuję import java.util.Scanner; import java.io.FileNotFoundException; import java.io.PrintWriter; public class Imiona_Tablica { /** * @author Wiciu */ public static void main(String[] args) throws FileNotFoundException { Scanner odczyt; String imiona; PrintWriter zapis; String[] tab; tab = new String[3]; System.out.println("Podaj Imiona:"); odczyt = new Scanner(System.in); for(int i=0; i&lt;3; i++){ imiona = odczyt.nextLine(); tab[i] = imiona; //odczyt.nextLine(); } for(String x: tab) System.out.println(x); zapis = new PrintWriter(&quot;Imona.txt&quot;); zapis.println(); // co mam tu wpisać ??? zapis.close(); } }

Slawek

http://download.oracle.com/javase/6/docs/api/java/io/PrintWriter.html Jak widzisz metody print, printf, println przyjmują różne parametry, liczby Stringi itp. Zrób więc po prostu pętlę, w której będziesz robił coś mniej więcej takiego: zapis.println(tab[i]);

Witek

Witam Dzięki Sławek za podpowiedź, program działa tak jak chciałem. Poniżej zamieszczam kod źródłowy, może komuś się przyda. import java.util.Scanner; import java.io.FileNotFoundException; import java.io.PrintWriter; public class Imiona_Tablica { /** * @author Wiciu */ public static void main(String[] args) throws FileNotFoundException { Scanner odczyt; String imiona; PrintWriter zapis; String[] tab; tab = new String[3]; System.out.println("Podaj Imiona:"); odczyt = new Scanner(System.in); for(int i=0; i&lt;3; i++){ imiona = odczyt.nextLine(); tab[i] = imiona;//odczyt.nextLine(); } zapis = new PrintWriter(&quot;Imona.txt&quot;); for(String x: tab) zapis.println(x); zapis.close(); System.out.println(&quot;Podane imiona to:&quot;); for(String x: tab) System.out.println(x); } }

Daniel

Przyda, przyda :)

aleksanderwiel

Wiciu, a odnośnie kodu to masz tu niegroźną literówkę zapis = new PrintWriter("Imona.txt"); Powinno być "Imiona.txt". Tak taki mały szczegół :D

Michał

Program w ogóle nie czeka, aż użytkownik wpisze dane, nie wiem dlaczego:( import java.util.Scanner; public class Tablice22 { public static void main(String[] args){ String[] imiona= new String[10]; Scanner odczyt=new Scanner(System.in); for (int i=0;i==9;i++){ System.out.println("podaj imie nr "+(i+1)); imiona[i]=odczyt.nextLine(); } for (String x: imiona){ System.out.println("Witaj, "+x+"!"); } } }

Slawek

W pierwszej pętli masz błędy warunek i kod w jej wnętrzu nigdy się nie wykonuje, zamiast ==, chyba chciałeś dać != :)

Michał

Już znalazłem błąd :) ma być oczywiście for(...,i&lt;10,...). Dziwne, że to w ogóle działało.

Michał

Qrcze, nie widziałem Twojego komentarza. Myślę, że przydałaby się tu możliwość edycji postów. :)

Witek

Przyłączam się do postu Michała, tak przydałaby się taka opcja.

johnny

Pomoże ktoś ? Numer rachunku bankowego składa się z 26 cyfr. Napisz program, który odczyta numer rachunku z konsoli, a następnie wyświetli go w formacie: XX XXXX XXXX XXXX XXXX XXXX XXXX

Maciek

Dopiero przeczytałem więc pewnie już sam do tego doszedłeś, ale będzie to może wskazówka dla innych: Wyświetlanie zapisać należy w formacie: substring(0,1)-substring(2,5)-... Oczywiście należy to zapisać tak żeby kompilator zrozumiał. To jest tylko podpowiedź jeśli chodzi o sposób działania programu.

Janosch

Tutaj masz moją wersję :) Na forum wkleiłem. http://forum.javastart.pl/Thread-Tablice-jednowymiarowe?pid=990#pid990

turtelian

u mnie nie wiedzieć czemu nie moge użyć i z pętli w pętli wiecej niż raz.... np w takiej sytuiacji for(int i=0; i&lt;5 ; i++) tablica[i] = skaner.nextLine(); System.out.println(&quot;podaj imie nr &quot;+i); drugie i eclipse podkresla i chce definiować to i na nowo tak samo jak zamienie tablice i wyswietlanie miejscami itp ponad godzine się zastanawiałem co miałem źle i w sumie dalej nie wiem czemu tak to wygląda

lolo

Dzieję się tak bo drugie "i" jest poza zasięgiem pętli. Napisz: for(int i=0; i&lt;5 ; i++) { tablica[i] = skaner.nextLine(); System.out.println(&quot;podaj imie nr &quot;+i); } W formie którą napisałeś zawartość pętli to tylko pierwsza linia po for(). Aby pętla miała więcej poleceń musisz je umieścić między klamrami { }