Retornar menor String

11 respostas
F

Estou com duvida em uma questao onde tenho que fazer uma funçao que leia 2 strings como parametro e retorne a menor delas, mas quando faço a comparação para ver qual a menor e retornar, ela nao esta me retornando em string e sim e bollean.
segue o codigo:

public static String exercicio10 (String a1, String a2 ) {

int resposta = a1.compareTo(a2);
  String  menor = "";

  if (resposta < 0) {
  	menor = a1;
  }
  
  else if (resposta > 0 ) {
  	menor = a2;
  }
  return menor;

}

11 Respostas

C

Não entendi sua dúvida. Esse código aí vai te retornar a String.
Mas, na pra fazer essa comparação de tamanho, o compareTo não é o que vc deve usar.
Ele faz uma comparação a nível de caracteres da String e não de tamanho.
Usando o método length(), vc consegue pegar o tamanho de cada String e aí sim, compará-los.

int tamanho1 = a1.length();
int tamanho2 = a2.length();
//comparações

Confere aí.
Abraço!

F

Usando o .lenght eu iria comparar o tamnho numerico de caracteres da srtring, mas no caso eu preciso comparar o tamanho alfabeticamente, por isso o compareTo.
o problema desse codigo é que ele nao esta me retornando a String e sim um valor True ou False.

C

Ah sim… entendi.
Mas esse código te retorna uma String. Como vc ta usando? Como tá chamando esse método?

C

Na verdade não entendi …rs
O que vc quer dizer com “comparar tamanho alfabeticamente”?
Quer ordenar alfabeticamente?

F

sim ordenar alfabeticamente.
eu estou chamando ela pelo main
entrendo com as duas Strings…
mas ela esta retornando sempre um valor bollean invez de retornar a String

C

Bacana… mas não to entendendo como esse código ta te retornando um boolean …rs
Posta o seu main completo aí, pode ser?

F

ta ai seria o 10 no caso

public static void main(String[] args) {

int opcao;

do {

IO.println ("\nCiências da Computação -  Periodo.\nAlgoritimos e Estruturas de Dados I.\nTrabalho pratico 4.\nFrederico - 541507.\n");

IO.println ("------------------- STRINGS E METODO EM JAVA ---------------------");

IO.println ( );

IO.println (“Aperte 1 para o EXERCICIO - 01!”);

IO.println (“Aperte 2 para o EXERCICIO - 02!”);

IO.println (“Aperte 3 para o EXERCICIO - 03!”);

IO.println (“Aperte 4 para o EXERCICIO - 04!”);

IO.println (“Aperte 5 para o EXERCICIO - 05!”);

IO.println (“Aperte 6 para o EXERCICIO - 06!”);

IO.println (“Aperte 7 para o EXERCICIO - 07!”);

IO.println (“Aperte 8 para o EXERCICIO - 08!”);

IO.println (“Aperte 9 para o EXERCICIO - 09!”);

IO.println (“Aperte 10 para o EXERCICIO - 10!”);

IO.println ( );

IO.println ("-------------------------------------------------------------");

IO.println ( );

opcao = IO.readint ("Escolha o exercicio que deseja corrigir: ");
switch (opcao) {
  		case 0:
  			break;
  		case 1:
  			exercicio1 ( );
  			break;
  		case 2:
  			String x = IO.readString ("Entre com uma cadeia de caracteres: ");
  			IO.println ("A quantidade de caracteres minusculos são: "+exercicio2 (x));
  			break;
  		case 3:
  			String y = IO.readString ("Entre com uma cadeia de caracteres: ");
  			IO.println ("A cadeia de caracteres invertida é: "+exercicio3 (y));
  			break;
  		case 4:
  			String z = IO.readString ("Entre com uma cadeia de caracteres: ");
  			IO.println ("Os caracteres minusculos sao: "+exercicio4 (z));
  			break;
  		case 5:
  			String w = IO.readString ("Entre com uma cadeia de caracteres: ");
  			IO.println ("A cadeia de caracteres invertida é: "+exercicio5 (w));
  			break;
  		case 6:
  			exercicio6 ( );
  			break;
  		case 7:
  			String a = IO.readString ("Entre com uma cadeia de caracteres: ");
  			char b = IO.readchar ("Entre com um caractere que deseja saber a quantidade de vezes que aparece na cadeia acima: ");
  			IO.println ("O número de vezes que o caractere repete é: "+exercicio7 (a,b));
  			break;
  		case 8:
  			String c = IO.readString ("Entre com uma cadeia de caracteres: ");
  			String d = IO.readString ("Entre com outra cadeia de caracteres: ");
  			IO.println ("A nova cadeia intercalada é: "+exercicio8 (c,d));
  			break;
  		case 9:
  			String e = IO.readString ("Entre com uma cadeia de caracteres: ");
  			String f = IO.readString ("Entre com outra cadeia de caracteres: ");
  			IO.println ("Se as cadeias forem = a resposta é True, se forem != a resposta é False: "+exercicio9 (e,f));
  			break;
  		case 10:
  			String g = IO.readString ("Entre com uma cadeia de caracteres: ");
  			String h = IO.readString ("Entre com outra cadeia de caracteres: ");
  			IO.println ("alfabeticamente a menor cadeia é: "+exercicio9 (g,h));
  			break;
  		default:
  			break;
  	}
  	IO.println ( );
  	IO.println ("-------------------------------------------------------------");
  	opcao = IO.readint ("Aperte 1 para continuar. \nAperte 0 para encerrar a correção.\n");
  	IO.println ( );
  }
  while (opcao !=0); {
  	IO.println ( );
  }

}

P

O teu método é exercicio9 ou exercicio10?

F

ahhhhhh putz mano eh menos kkk

C

Isso mesmo kkk

L

Cara, me pegou. Simulei seu método aqui e para mim ele retornou uma string, contendo os parâmetros dela. Não entendi também como pode retornar um boolean. O seu método faz a comparação Lexicográfica certinha. Revisa o resto do código.

public static void main(String[] args) {

String saida="";
	saida = Compara("abc", "abcd");
	System.out.println("Texto menor: "+saida);


}

public static String Compara(String texto1, String texto2){
	
	int resposta;
	resposta = texto1.compareTo(texto2);
	String menor="";
	
	if(resposta < 0){menor = texto1;}
	
	else{menor = texto2;}
	return  menor;
	<img src="/uploads/3X/c/4/c49af44f633e1a518019dbd6334122c5eaed874c.png.webp" width="690" height="452">
}
Criado 8 de março de 2016
Ultima resposta 14 de mar. de 2016
Respostas 11
Participantes 4