Kurs Java Podstawy - rozszerzony

Rozwiązanie 1.12

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]);
  }
}

Komentarze

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 { }