No i problemo z JAVA gotowcem


(Kozielartur) #1

Cześć wszystkim, Dobrego rozpoczęcia nowego roku...

Mam przepisane gotowca z książki oto kod źródłowy :

class ZagadkowyBasen1 {

public static void main(String[] args) {

int x=0;

while(x<4){

System.out.print("a");

if(x<1){

System.out.print(" ");

}

System.out.print("n");

if(x>1){

System.out.print("tyczny");

x=x+2;

}

if(x==1){

System.out.print("talek");

}

if(x<1);{

System.out.print("asz");

}

System.out.println("");

x=x+1;

}

}

}

Wynik powinien być : a nasz

antalek

antyczny

,a wychodzi : a nasz

antalekasz

antycznyasz

Już wiele razy zmieniałem wartość x, lub zmieniałem kolejność wyświetlonych zawartości jednego wiersza np.System.out.print("asz") który powiela sie niepotrzebnie o 2razy...Nie powinien pokazywać tego wyniku...Dzięki za porady, info, pomoc !!


(Damgora) #2

znów średnik zaraz za warunkiem if'a


(Sawyer47) #3

Zadbaj o formatowani kodu, oto jak mógłby wyglądać, gdybyś poświęcił kilka sekund na użycie tabulatora:

class ZagadkowyBasen1 {

	public static void main(String[] args) {

		int x=0;


		while(x<4) {

			System.out.print("a");


			if(x<1) {

				System.out.print(" ");

			}


			System.out.print("n");


			if(x>1) {

				System.out.print("tyczny");

				x=x+2;

			}


			if(x==1) {

				System.out.print("talek");

			}


			if(x<1) {

				System.out.print("asz");

			}


			System.out.println("");

			x=x+1;

		}

	}

}

Co do problemu to masz średnik po if(x<1) co zupełnie zmienia działanie programu.


(Tomek Matz) #4

Ty jesteś chyba niereformowalny, ale spróbuję jeszcze raz

http://forum.dobreprogramy.pl/system-out-print-kontra-system-out-println-t427529.html?hilit=ArchiJavaError#p2718616

I nie mówię tego dlatego, że takie jest moje widzi mi się. Tak po prostu powinno się robić.


(Airborn) #5

ArchiJavaError , proszę poprawić formatowanie wklejonego kodu oraz objąć go tagiem

aby poprawić jego czytelność. Proszę również pamiętać by w przyszłości stosować to zalecenie do wszystkich nowych postów[/color]

(Kozielartur) #6

Cześć Dzięki za wiadomość,myślę,że z użyciem tagów nie będzie problemu...

Szczęśliwego Nowego Roku...

-- Dodane 31.12.2010 (Pt) 12:40 --

Nasunęło mi się pytanie ale co sprawia,że do każdej lini jest dodawany na koniec "asz" :

if(x<1);

{

System.out.print("asz");

}

przecież nie we wszystkich przypadkach x<1 i nie wiem o co chodzi może to zasługa lini

System.out.println("") ale nie jeste pewien...Może mi ktoś podpowie...Myślę,że nie jest to trudne ale pewnie za proste by to zrozumieć mógł każdy...

Dzięki za podpwowiedzi....


(Tomek Matz) #7

Dlatego, że jak zauważył cayman3_11 masz średnik za instrukcją

if(x<1)

W związku z tym ten kod

{

    System.out.print("asz");

}

jest wykonywany zawsze, bo instrukcja if nie odnosi się do niego. Jeśli masz zapis

if(x<1);

to to znaczy, że jeśli x będzie mniejsze od 1 to nie rób nic.

Mam nadzieję, że teraz to zrozumiesz. Choć wydaje mi się, że już ostatnim razem [alex] wytłumaczył to wystarczająco.

PS Zainstaluj jakieś IDE, np. NetBeans lub Eclipse i zacznij używać debuggera. Poza tym zastosuj się do zaleceń Airborn.