O pretendido é:
* * * * *
Mas o meu programa completa tudo. Fiz assim:
for(int linhas = 1; linhas <= 5; linhas++) {
for(int ast = 1; ast <= linhas; ast++) {
System.out.print("* ");
}
System.out.println();
}
O pretendido é:
* * * * *
Mas o meu programa completa tudo. Fiz assim:
for(int linhas = 1; linhas <= 5; linhas++) {
for(int ast = 1; ast <= linhas; ast++) {
System.out.print("* ");
}
System.out.println();
}
Boas amigo, tente assim,
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
if (j != i) {
System.out.print(" ");
} else if (j == i) {
System.out.print("*");
}
}
System.out.println();
}
}
Bom estudo
O problema é que você imprime o asterisco dentro do for
, por isso ele é impresso várias vezes.
Mas cada linha só tem um asterisco, e o que varia é a quantidade de espaços antes dele: na primeira linha não tem nenhum espaço, na segunda linha tem um espaço e assim por diante.
Ou seja, a solução é: para cada linha você faz um loop para imprimir os espaços, e depois você imprime um asterisco. Assim:
int linhas = 5;
for (int i = 0; i < linhas; i++) { // para cada linha
// imprime os espaços
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
// depois dos espaços, imprime um asterisco e pula a linha
System.out.println("*");
}
A primeira linha é zero, então o for
interno irá imprimir zero espaços (que é outra forma de dizer que, quando i
é igual a zero, ele nem entra neste for
). Na segunda linha, i
é igual a 1, então o for
interno imprime um espaço e assim por diante. Depois de imprimir os espaços, basta imprimir o asterisco e pular para próxima linha.
Repare que para imprimir o asterisco usei println
, assim ele já pula para a próxima linha de uma vez (afinal, eu sei que o asterisco sempre está no fim da linha, então não precisa de um println
vazio depois).
obrigado