• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak napisać szachownicę w Java dla boku n używając tylko while, if

VPS Starter Arubacloud
0 głosów
1,410 wizyt
pytanie zadane 12 lutego 2020 w Java przez lucyliu Początkujący (370 p.)

Cześć,

Muszę napisać program, który będzie wypisywał szachownicę tego typu:

X O X O X

O X O X O

X O X O X

O X O X O

X O X O X

dla boku o wymiarze n.

Doszłam już kiedy ma się pojawiać X a kiedy O, ale nie mogę wymyślić co dodać, żeby wyświetlało się to n-razy. 

Będę wdzięczna za wszelkie wskazówki :) 

public class zadanie4 {
	public static void main(String[] args) {
	 
		int x = 1;
		int o = 1;
		int size = 5;
		
	while (size > 0)	{
		if (x + o % 2 == 1) 
			
			System.out.println("X");
		else
			System.out.println("O");
		
		x++;
		o++;
	}
			
	}	
		
		
}

 

2 odpowiedzi

+1 głos
odpowiedź 12 lutego 2020 przez tangarr Mędrzec (155,140 p.)
To zadanie jest takie samo jak twoje poprzednie zadanie z tabliczką mnożenia.
Pętla wygląda niemal identycznie. Jedynymi różnicami jest obliczenie "indeksu" rysowanego elementu (ile znaków zostało już narysowanych).
Aby rysować znaki w jednej linii użyj funkcji print zamiast println. Funkcję println użyj aby przejść do następnej linii.
0 głosów
odpowiedź 12 lutego 2020 przez ValgeHunt22 Obywatel (1,160 p.)
public class Main {

    public static void main(String[] args) {

        int x = 0;
        int o = 0;
        int a = 5;
        int b = 5;

        while (b > 0) {
            if ((x + o) % 2 != 0) {
                System.out.print("X");
                x++;
            } else {
                System.out.print("O");
                o++;
            }
            if ((x + o) % a == 0) {
                b--;
                System.out.println();
            }
        }
    }
}

Mam nadzieję że pomogłem wink

komentarz 12 lutego 2020 przez lucyliu Początkujący (370 p.)
Dziękuję :)

Czy można to napisać używając tylko jednej zmiennej n? Zamiast a i b? Bo takie mam polecenie, żeby n warunkowało wielkość tej szachownicy.
komentarz 12 lutego 2020 przez ValgeHunt22 Obywatel (1,160 p.)

Można zrobić tak:

public class Main {

    public static void main(String[] args) {

        int x = 0;
        int o = 0;
        int n = 5;

        while (n > 0) {
            if ((x + o) % 2 != 0) {
                System.out.print("X");
                x++;
            } else {
                System.out.print("O");
                o++;
            }
            if ((x + o) % 5 == 0) {
                n--;
                System.out.println();
            }
        }
    }
}

Powinno już być dobrzesmiley

komentarz 12 lutego 2020 przez lucyliu Początkujący (370 p.)

Bardzo dziękuję :)

A czy możesz mi wytłumaczyć ostanie if? Tak jak blondynce? wink

 

 

 

komentarz 12 lutego 2020 przez ValgeHunt22 Obywatel (1,160 p.)

Ostatni if sprawdza czy suma x+o jest podzielna przez 5 (określa ona ilość znaków w rzędzie jeśli zamiast 5 wpiszesz tam 7 w rzędzie bedzie 7 znaków). Jeśli jest podzielna to zmniejszamy n o jeden i przechodzimy do nowej linii. Mam nadzieję że wystarczająco jasno to wytłumaczyłem smiley

komentarz 13 lutego 2020 przez lucyliu Początkujący (370 p.)
Mam jeszcze  jedno pytanie :)

Bo jak w ostatnim if wstawimy 5, to nam nie będzie się automatycznie podstawiało z n i po zmianie n, program nie będzie działał poprawnie.

Jak zmieniam 5 na n to zaczyna uruchamiać się błędnie, w taki sposób:

OXOXO
XOX
O
X
O
komentarz 13 lutego 2020 przez ValgeHunt22 Obywatel (1,160 p.)
No tak ponieważ w tym przypadku n oznacza ilość rzędów a 5 ilość znaków w rzędzie. Jeśli wpiszesz w ostatnim if n to program nie wykonuje sie poprawnie dlatego ze wartość n zmienia się w czasie dzialania programu dlatego raz wyswietla sie 5 znaków w rzędzie a pozniej coraz mniej.
komentarz 13 lutego 2020 przez lucyliu Początkujący (370 p.)

chyba "naprawiłam" :) 

public class zadanie4 {
	public static void main(String[] args) {
	 
			 
	        int x = 0;
	        int o = 0;
	        int n = 8;
	        int b = n;
	 
	        while (n > 0) {
	            if ((x + o) % 2 != 0) {
	                System.out.print("X");
	                x++;
	            } else {
	                System.out.print("O");
	                o++;
	            }
	            if ((x + o) % b == 0) {
	                n--;
	                System.out.println();
	            }
	        }
	    }
	}

 

komentarz 13 lutego 2020 przez ValgeHunt22 Obywatel (1,160 p.)
Cieszę się, że mogłem pomóc.
komentarz 13 lutego 2020 przez lucyliu Początkujący (370 p.)
Bardzo dziękuję :)

Podobne pytania

+2 głosów
1 odpowiedź 869 wizyt
0 głosów
1 odpowiedź 1,194 wizyt
pytanie zadane 4 kwietnia 2019 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)
0 głosów
1 odpowiedź 205 wizyt
pytanie zadane 14 maja 2023 w C i C++ przez polandonion Dyskutant (7,560 p.)

93,018 zapytań

141,985 odpowiedzi

321,274 komentarzy

62,362 pasjonatów

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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...