pmlm 18 de ago. de 2016 2 likes
O char é imutável, tens de atribuir o valor novamente a c.
c = Character . toUpperCase ( c );
Raphael_Brettas 18 de ago. de 2016
Deu certo! Mas estou com outro problema na mesma questão. Preciso de um método recursivo que remova os espaços da String e um que remova todas as ocorrências do primeiro caracter da String. Está assim
public static String RemoveEspaco ( String s , int i ) {
StringBuffer textoSemEspaco = new StringBuffer ();
char c = s . charAt ( 0 );
textoSemEspaco . append ( c );
if ( s . length () > 1 ) {
if ( c == ' ' )
RemoveEspaco ( s . substring ( 1 ));
else
textoSemEspaco . append ( RemoveEspaco ( s . substring ( 1 )));
}
return textoSemEspaco . toString ();
}
public static String RemoveChar ( String s , char c , int i ) {
StringBuffer textoSemChar = new StringBuffer ();
char d = s . charAt ( 0 );
textoSemChar . append ( c );
if ( s . length () > 1 ) {
if ( d == c )
RemoveChar ( s . substring ( 1 ), c );
else
textoSemChar . append ( RemoveChar ( s . substring ( 1 ), c ));
}
return textoSemChar . toString ();
}
Ambos estão removendo tudo
Solucao aceita
pmlm 19 de ago. de 2016 1 like
Aqui estás a ignorar o que é devolvido pelo método. Provavlemente queres fazer return deste resultado…
Dragoon 19 de ago. de 2016
Código básico para conversão de um contéudo de um String tudo em maiúsculo :
public static void ToUpper ( char [] values , int index )
{
if ( index < values . length )
{
values [ index ] = String . valueOf ( values [ index ] )
. toUpperCase ()
. charAt ( 0 );
ToUpper ( values , index + 1 );
}
}
Como usar?
String texto = "guj site" ;
int index = 0 ;
char [] values = texto . toCharArray ();
ToUpper ( values , index );
System . out . println ( texto );
System . out . println ( String . valueOf ( values ));
DEMO
Essa forma foi feita bem mais simples e reduz a complexidade do código (idéia de @pmlm ):
Maiúsculo:
public static String toUpperCase ( String t )
{
if ( t . length () == 0 ) return "" ;
return String . valueOf ( String . valueOf ( t . toCharArray () [ 0 ] )). toUpperCase () +
toUpperCase ( t . substring ( 1 ));
};
Sem espaço:
public static String noSpace ( String t )
{
if ( t .length () == 0 ) return "" ;
return t .charAt ( 0 ) != ' ' ?
t .charAt ( 0 ) + noSpace ( t .substring ( 1 )) :
noSpace ( t .substring ( 1 )) ;
};
Como utilizar:
String cd = "guj site" ;
System . out . println ( toUpperCase ( cd ));
System . out . println ( noSpace ( cd ));
Dragoon 19 de ago. de 2016
Código básico para conversão de um contéudo de um String tudo em maiúsculo
A partir do momento que usas um index e vais incrementando não sei se podes considerar recursivo. É simplesmente um ciclo “disfarçado”
Na verdade, é um processo recursivo, aonde o método para ter um fim utilize o seu paramento como termino do método. Eu gostaria de saber de você @pmlm , então, como seria um código recursivo, nesse caso?
pmlm 19 de ago. de 2016 1 like
Eu faria algo assim
public static String toUpper ( String values ) {
if ( values .length () == 0 ) {
return "" ;
}
return Character .toUpperCase ( values .charAt ( 0 )) + toUpper ( values .substring ( 1 )) ;
}
Dragoon 19 de ago. de 2016
public static String toUpper ( String values ) {
if ( values .length () == 0 ) {
return “”;
}
return Character .toUpperCase ( values .charAt ( 0 )) + toUpper ( values .substring ( 1 )) ;
}
@pmlm
Esse código resolve o problema, mas, eu não vejo o meu código como falso recursividade, pelo motivo que eu utilizei um vetor.
Exemplos em sites tem o mesmo tipo:
int somatoria ( int vetor [], int tamanho )
{
if ( tamanho > 0 )
return vetor [tamanho - 1 ] + somatoria ( vetor , tamanho - 1 ) ;
else
return 0 ;
}
Referencia: [Recursividade (ciência da computação)](https://pt.wikipedia.org/wiki/Recursividade_(ciência_da_computação)
Existe várias formas de implementação!
Raphael_Brettas 19 de ago. de 2016
Sim! Era só colocar um return antes. Muito obrigado!