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<5; i++){ System.out.println("podaj imie nr "+(++i)); --i; /* dekrementacja konieczna bo wcześniej ikrementujemy aby nie było komunikatu "Podaj imie nr 0" */ tablica[i] = odczyt.nextLine(); } //wyświetlenie przy użyciu pętli for each for(String x : tablica) System.out.println("Witaj "+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<3; i++){ imiona = odczyt.nextLine(); tab[i] = imiona; //odczyt.nextLine(); } for(String x: tab) System.out.println(x); zapis = new PrintWriter("Imona.txt"); 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<3; i++){ imiona = odczyt.nextLine(); tab[i] = imiona;//odczyt.nextLine(); } zapis = new PrintWriter("Imona.txt"); for(String x: tab) zapis.println(x); zapis.close(); System.out.println("Podane imiona to:"); 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<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<5 ; i++) tablica[i] = skaner.nextLine(); System.out.println("podaj imie nr "+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<5 ; i++) { tablica[i] = skaner.nextLine(); System.out.println("podaj imie nr "+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 { }