Ajuda com "decrementar" asteriscos de uma String [RESOLVIDO]

9 respostas
J

Boa tarde pessoal,
Estou com um exercício para fazer que pede para criar um triangulo retangulo com asteriscos, usando laços e condições.
Conforme abaixo:












Sei que estou fazendo isso “porcamente”, mas pensei em fazer dessa forma:

public class Principal { public static void main(String[] args) { int i=0; String temp = "**"; String asterisco =""; for(i=0;i<=12;i++){ if(i==0){ asterisco ="*"; System.out.println(asterisco); } else{ if(i==1){ asterisco += temp; System.out.println(asterisco); } else{ if(i==2){ asterisco += temp;
e assim por diante… o problema é quando eu chego no if(i==7) que seria onde eu iria decrementar da variavel asterisco, pensei assim:

else{
	if(i==6){
		asterisco -= temp;
		System.out.println(asterisco);
	}
}

Porém a class String não me permite decrementar dessa forma, alguém conhece alguma forma de decrementar a mesma?
Caso não exista, alguém poderia me dar uma esclarecida de uma outra forma mais fácil de fazer esse triangulo.
ps: Preciso de uma forma realmente mais fácil, sem grandes complicações para que eu possa entender oq estou fazendo.

Obrigado a todos!

9 Respostas

Rodrigo_Sasaki

um triângulo retângulo é muito mais fácil do que isso… ele tem um ângulo reto (90º), lembra?

é assim:







**
*

ficou mais fácil agora ?

EDIT:

e só pra complementar… você poderia cortar asteriscos da sua string com os métodos substring() ou replaceFirst(), ambos da classe String

J

Opa, valeu digão.

No cabeçalho do exercicio pede para fazer um triangulo retangulo e embaixo fala q eh similar a este q postei.
Vou dar uma estudada nesses metodos substring() e replaceFirst() e já posto aqui se deu certo.

Obrigado meu caro!

Rodrigo_Sasaki

Sem problemas :slight_smile:

Se tiver que fazer o triângulo do desenho, que se não me engano é o isóceles, também dá com esses métodos…
ou se tiver um conhecimento de expressões regulares da pra usar replaceAll(), só pra brincar, rs.

J

Digao,
Usei o metodo substring() e deu certinho para o q eu queria.
Fiz da seguinte forma:

else{
       if(i==7){
		System.out.println(asterisco.substring(0, 11));
	}

Por enquanto vou utilizar assim mesmo pois estou muito garrado aqui, mas com o tempo vou procurando formas de fazer algoritmos mais inteligentes ne hehe

Obrigado pela ajuda ai meu amigo!
Até

Rodrigo_Sasaki

cuidado pois você precisa de um número dinâmico, se colocar o 11, ele só vai diminuir sua string uma vez.

se for fazer algo hard coded assim eu sugiro que use o replaceFirst()

J

Tipo, eu enchi de if la saca?
assim:

else{
	if(i==7){
		System.out.println(asterisco.substring(0, 11));
	}
	else{
		if(i==8){
			System.out.println(asterisco.substring(0, 9));
		}
		else{
		        if(i==9){
			     System.out.println(asterisco.substring(0, 7));
			}

assim sucessivamente…

Mesmo assim, qdo acabar essa lista de exercicios aki, vou dar uma estudada nesses metodos q vc me passou.

Valeu meu caro!

Rodrigo_Sasaki

OK, não vou te passar código pronto pra você conseguir estudar e descobrir por você mesmo, mas refatora isso depois, por favor! hehehe

J

Cara, desculpa a lerdeza.
Agora q percebi que posso criar uma variavel para incrementar aquela igualdade do if(i == num) e depois nos decrementos da string, colocar uma variavel para decrementar -2 até chegar a 1.
HAUSUHASHUHUSA

Bom, é apanhando q se aprende ne, vou tentar fazer aki de uma forma mais inteligente!
Valeu pelo toque ai! :smiley:

J

Digao, consegui melhorar um pouco.
Da uma olhada se é mais ou menos isso q vc imaginava tbem…

public class Principal {
	public static void main(String[] args) {
		int i=0;
		int j=0;
		String temp = "**";
		String asterisco ="";
		int linhas =13;
		for(i=0;i<=12;i++){
			if(i==0){
				asterisco ="*";
				System.out.println(asterisco);
			}
			else{
				if((i==j)&&(j<=6)){
					asterisco += temp;
					System.out.println(asterisco);
				}
				if((i==j)&&(j>6)){
					System.out.println(asterisco.substring(0, (linhas - 2)));
					linhas = linhas -2;
				}
			}
			j++;
		}
	}
}

Creio q deve ter formas mil vezes mais fáceis de fazer isso, porém fiquei satisfeito com esse algoritmo q foi feito “na raça” mesmo ehheeheh

valeu pelos toques ai cara!
Até!

Criado 28 de abril de 2012
Ultima resposta 28 de abr. de 2012
Respostas 9
Participantes 2