Problem z kodem

0

Witam
Napisałam program który wyświetla znak X w pionie i poziome jednak nie wiem jak przekształcić program by wyświetlał ten znak na ukos np:
X
X
X itd.
Proszę o udzielenia jakiejś wskazówki oto kod jaki chcę przerobić :

import java.io.*;
public class gwiazdki3a {

public static void main(String[]args )
{
	int a = 0;
	int i;
	System.out.println("Podaj ilość rzędów gwiazdek");
	a = readInt();
	
	for( a=0; a<5; a++)
	{
		for( i=1; i<=a; i++)
		{
		System.out.println(" X ");
		}
		System.out.println(" X ");
	}
}

public static int readInt() {

try {

     return Integer.parseInt(new BufferedReader(

             new InputStreamReader(System.in)

             ).readLine().trim()

     );

} catch (Exception e) {return -1;}

}
}
Proszę o pomoc bądź też jakąś wskazówkę. Z góry dziękuję :)

0

Zastanów się, jakbyś to rysowała na kartce.
W pierwszym wierszu stawiasz X
W drugim wierszu robisz jedno pole odstepu na stepnie stawiasz X
W trzecim wierszu robisz 2 pola odstepu nastepnie stawiasz X
....
W n-tym wierszu robisz-1 pol odstepu nastepnie stawiasz X

0

Tak na kartce jest łatwiej, ale mój problem polega na tym w jaki sposób zapisać przesunięcie X o daną odległość. Wiem, że ma to być związane z kolejnością wierszy
pierwszy zero odstępu;
drugi jeden odstęp;
itd. Tylko w jaki sposób zmienić kod aby uzyskać ten rezultat, utworzyć nową pętle, która będzie przesuwać X w zależności od jego położenia.

0
for (int i = 0; i<numer_wiersza; i++) {
  System.out.print(' '); 
}
System.out.println('X');

to Ci wypisze jeden wiersz o dlugosci: numer_wiersza-1

0
String prefix="";
for(int i=0;i<granica;i++)
{
    System.out.println(prefix+"X");
    prefix+=" ";
}

Poniższy fragment Twojego kodu jest bez sensu

                a = readInt();
               
                for( a=0; a<5; a++)

Wpierw czytasz zmienną a, a potem nadajesz jej wartość 0.

0
bo napisał(a)
String prefix="";
for(int i=0;i<granica;i++)
{
    System.out.println(prefix+"X");
    prefix+=" ";
}

Poniższy fragment Twojego kodu jest bez sensu

                a = readInt();
               
                for( a=0; a<5; a++)

Wpierw czytasz zmienną a, a potem nadajesz jej wartość 0.

To były moje próby w jaki sposób można by zapisać kolejny wiersz, wiem że jest to trochę bez sensu a raczej bardzo bez sensu :)
Co to jest prefix ?

0

Nazwa zmiennej, jak Ci się nie podoba, to zmień np. na nieLubiePoniedzialku

0

prefix to jest zmienna która jak sama nazwa wskazuje przechowuje początek czegoś, w tym wypadku spacje. Przeanalizuj dokładnie kod. Widać że najpierw to jest 1 spacja, potem 2 itd.

0
[losowa nazwa] napisał(a)
for (int i = 0; i<numer_wiersza; i++) {
  System.out.print(' '); 
}
System.out.println('X');

to Ci wypisze jeden wiersz o dlugosci: numer_wiersza-1

THX działa :)
Pozdrawiam :)

0

A jeszcze jedno pytanie żeby rysowały się w odwrotną stronę należy zmienić znak?

0

Moja propozycja

String prefix="";
for(int i=0;i<granica;i++)
{
    System.out.println(prefix+"X");
    prefix+=" ";
}

wypisuje Ci wszystkie potrzebne wiersze, ale może wolisz kod skomplikowany/

0
for(int i=1; i <= granica ;i++)
    System.out.printf("%"+i+"s\n","X");
0
bo napisał(a)

Moja propozycja

String prefix="";
for(int i=0;i<granica;i++)
{
    System.out.println(prefix+"X");
    prefix+=" ";
}

wypisuje Ci wszystkie potrzebne wiersze, ale może wolisz kod skomplikowany/

Dzięki taki już mam i działa, tylko teraz szukam żeby rysował X w drugą stronę :)
x
x
x

0

Czlowieku pomysl troche...

Dla pierwszego wiersza masz wypisac dwie spacje
Dla drugiego jedna spacje
Dla trzeciego zero spacji...

Nie widzisz tu reguly ?

Mozesz albo zmienic warunek w petli albo przerobic petle tak, zeby "szla" ku mniejszym liczbom...

0
[losowa nazwa] napisał(a)

Czlowieku pomysl troche...

Dla pierwszego wiersza masz wypisac dwie spacje
Dla drugiego jedna spacje
Dla trzeciego zero spacji...

Nie widzisz tu reguly ?

Mozesz albo zmienic warunek w petli albo przerobic petle tak, zeby "szla" ku mniejszym liczbom...

Jezu jaki drażliwy, sorry że ktoś ma problemy z programowanie i nie zawsze załapie o co chodzi w danym programie. A tak na przyszłość nikt nie jest dobry we wszystkim. każdy ma z czymś problem nawet taki inteligentny programista jak ty. Zresztą twój kod nie był mi zbytnio przydatny inni wykazali się większym zrozumieniem i pomogli bardziej.

dziękuję za cenne rady "Panie: wszystko wiem" :) i Pozdrawiam :)

0

Może by nie był drażliwy, gdybyś umieściła temat w odpowiednim dziale, tj. Newbie.

0
wpisałem nick napisał(a)

Może by nie był drażliwy, gdybyś umieściła temat w odpowiednim dziale, tj. Newbie.

Sorry takie forum to dla mnie nowość i nie ogarniam tego zbytnio, na przyszłość pewnie wrzucę temat w odpowiednie miejsce :)
Ale a propos tego mojego problemu naprawdę mam z taki kodem problem :( to jest denerwujące nawet i dla mnie że w takich błahostkach proszę o pomoc, trochę głupio się czuję z tym ale muszę się tego nauczyć bo w szkole wymagają tego ode mnie. I narysowanie X w drugą stronę naprawdę ;-( sprawia mi problem. Mam nawet takie zadanie, w którym muszę narysować choinkę z X no ale nie wiem jak. To ma wyglądać w następujący sposób:
XXXXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXX
No i tak dalej, to na pewno jest banalne jednak dla tak głupich osób jak ja niestety to nie jest łatwe. Dlatego prosiłam o pomoc i proszę nadal może ktoś się zlituje :)

0
hellsing napisał(a)

I narysowanie X w drugą stronę naprawdę ;-( sprawia mi problem.

for(int i=granica; i >= 1 ;i--)
    System.out.printf("%"+i+"s\n","X");
0
Luno napisał(a)
hellsing napisał(a)

I narysowanie X w drugą stronę naprawdę ;-( sprawia mi problem.

for(int i=granica; i >= 1 ;i--)
    System.out.printf("%"+i+"s\n","X");

Dziękuję Ci bardzo :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1