GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Duvida com métodos em Java

java
programação
Tags: #<Tag:0x00007f80430d8570> #<Tag:0x00007f80430d8430>

#1

Eu estava dando uma olhada em Strings e me deparei com um código em um site que exibe uma palavra inserida em forma de escada desse jeito: https://www.devmedia.com.br/imagens/articles/268250/String7.png

import java.util.Scanner;

public class String7 {

public static void main(String[] args) {
Scanner ler = new Scanner(System.in);

String s;
int i, j, n;
while (true) {
  System.out.printf("Informe uma String, FIM para encerrar:\n");
  s = ler.nextLine();

// compara a string informada pelo usuário com a palavra FIM ignorando
// na comparação se os caracteres são maiúsculos ou minúsculos
if (s.equalsIgnoreCase(“FIM”))
break;

  System.out.printf("\n");
  n = s.length(); // tamanho da string (qtde de caracteres)

  for (i=0; i<n; i++) {

// a cada linha mostra ‘i’ caracteres
for (j=0; j<=i; j++) {
// mostra o j-ésimo caractere de 's’
System.out.printf("%c", s.charAt(j));
}
System.out.printf("\n");
}
System.out.printf("\n");
}
}

}

Se eu quisesse fazer essa escada continuar da onde a crescente parou e passar para decrescente até o final, o que teria que fazer? Tentei mexer no código mas minhas experiências não deram resultado.


#2

Se você vai de 0 até n para percorrer ela toda de uma forma crescente, como seria para uma forma decrescente? n até 0.

Seria a forma reversa do que você fez, começando do tamanho da palavra, indo até 0 (ou 1), diminuindo cada vez que for (i–).


#3

vc pode usar o metodo substring que vai facilitar a sua vida um bocado

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int,%20int)

agora se vc tem a palavra UVA e quer fazer

U
UV
UVA
UV
U

vc tem diversas opções.

por exemplo as primeiras linhas (crescente, incompleto ) vc faz com um LOOP, imprime a palavra inteira e depois executa o mesmo LOOP porem ao contrario.

for(int i=0; i < N - 1; i++) {
  // imprime a substring de 0 a i
}

//imprime a palavra inteira

for(int i- N - 1; i >= 0; i--) {
  // imprime a substring de 0 a i
}

pode fazer com um loop so? pode, tem q usar matemática.


#4

Obrigado pela explicação, vou tentar aplicar agora mesmo.


#5

Obrigado pela dica!