• 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,267 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 (154,780 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ź 750 wizyt
0 głosów
1 odpowiedź 938 wizyt
pytanie zadane 4 kwietnia 2019 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)
0 głosów
1 odpowiedź 140 wizyt
pytanie zadane 14 maja 2023 w C i C++ przez polandonion Mądrala (6,970 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...