Dúvida - pacote java.lang

Galera, poderiam me dizer como comparar através de um método do pacote [quote]java.lang[/quote] as 2 últimas letras de 2 Strings??? Já encontrei o método equalsIgnoreCase, utilizeo também o método chatAt, mas daí eu só localizo a última letra, não sei como localizar as 2 últimas para comparar. Obrigado desde já!!!

Você pode pegar o tamanho da String e utilizar o método charAt para pegar os caracteres na duas últimas posições.

Aliado ao chartAt e o tamanho, você pode usar o substring, que passando a posição da penultima letra, ele retorna o String com as 2 ultimas letras.

		String s = "string";
		
		System.out.println(s.charAt(s.length() - 2) + ""
				+ s.charAt(s.length() - 1));
		System.out.println(s.substring(s.length() - 2));

Dependendo qual for o seu problema, da uma olhada se o método endsWith da classe String não pode te ajudar

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#endsWith(java.lang.String)

Com o substring tu consegue fazer isso…

String suaString = strAntiga.substring(strAntiga.length()-2);

PS: agora eu n lembro c é -2 ou -3, mas é um desses kras ai. ok ?

Galera, agradeço a ajuda, mas estou iniciando agora e estudando por conta, então ainda estou com certas dificuldades. Digitei o seguinte código:

public class String {
	public static void main (String args[]) {
		String str1 = "Hello";
		char x = str1.charAt(0);
		String  str2 = "hello";
		boolean result = str1.equalsIgnoreCase(str2);
	}
}

E o sistema me retornou erros…Entre eles, o sistema informa não conhecer os métodos charAt e equalsIgnoreCase. Será que é porque utilizo java versão 1.4.2 ???

Esses métodos existem nessa versão… o problema é que vc declarou a classe com o nome String, então a String que ele esta considerando no seu programa é a sua classe e não a classe do J2SE, e como sua classe não tem esses métodos, da erro… mude o nome da sua classe que o treco compila.
Ou então implemente assim:

		java.lang.String str1 = "Hello";
		char x = str1.charAt(0);
		java.lang.String str2 = "hello";
		boolean result = str1.equalsIgnoreCase(str2);

Beleza cara, deu certo!!! Muito obrigado pela ajuda… Abraços

Galera, surgiu uma dúvida…

Eu não entendi porque utilizo uma CHAR para guardar o valor a ser comparado e depois faço novamente a comparação entre as 2 Strings. Alguém pode me explicar?? Na verdade, não entendi a lógica dos métodos charAt + equalsIgnoreCase

Obrigado!!

Galera, surgiu uma dúvida…

Eu não entendi porque utilizo uma CHAR para guardar o valor a ser comparado e depois faço novamente a comparação entre as 2 Strings. Alguém pode me explicar?? Na verdade, não entendi a lógica dos métodos charAt + equalsIgnoreCase

Obrigado!!

[quote=“thundercas”]Galera, surgiu uma dúvida…

Eu não entendi porque utilizo uma CHAR para guardar o valor a ser comparado e depois faço novamente a comparação entre as 2 Strings. Alguém pode me explicar?? Na verdade, não entendi a lógica dos métodos charAt + equalsIgnoreCase

Obrigado!![/quote]

      String str1 = "Hello";
      char x = str1.charAt(0);
      String  str2 = "hello";
      boolean result = str1.equalsIgnoreCase(str2); 

Esse seu código faz:

  1. cria uma string com “Hello” referenciado pela variavel str1
  2. grava na variavel char x o primeiro caracter da string str1 (ou seja ‘H’)
  3. cria uma string com “hello” referenciado pela variavel str2
  4. compara str1 com str2 utilizando equalsIgnoreCase, ou seja, verifica se a str1 é igual a str2 sem considerar maiusculas e minusculas.

o char x vc nem usa, nesse código ai é dispensavel…

Para resolver la o seu problema inicial:

Obtendo as duas ultimas letras com charAt:

		String str1 = "Hello";
		String str2 = "hello";

		String ultimas2Str1 = "" + str1.charAt(str1.length() - 2)
				+ str1.charAt(str1.length() - 1);
		String ultimas2Str2 = "" + str1.charAt(str2.length() - 2)
				+ str1.charAt(str2.length() - 1);
		
		boolean iguais = ultimas2Str1.equalsIgnoreCase(ultimas2Str2);
		
		System.out.println("As duas ultimas letras de " + str1 + " ("
				+ ultimas2Str1 + ") comparado com as duas ultimas letras de "
				+ str2 + " (" + ultimas2Str2 + ") são iguais? - " + iguais);

Obtendo as duas ultimas letras com substring:

		String str1 = "Hello";
		String str2 = "hello";

		String ultimas2Str1 = str1.substring(str1.length() - 2);
		String ultimas2Str2 = str1.substring(str2.length() - 2);

		boolean iguais = ultimas2Str1.equalsIgnoreCase(ultimas2Str2);

		System.out.println("As duas ultimas letras de " + str1 + " ("
				+ ultimas2Str1 + ") comparado com as duas ultimas letras de "
				+ str2 + " (" + ultimas2Str2 + ") são iguais? - " + iguais);

bele?!

Ahh… beleza cara. Agora sim eu entendi. Eu copiei esse código de uma apostila, e realmente não entendi pra que era guardado o valor dentro de uma char.

Beleza pura, muito obrigado pela ajuda!!! Abraços para todos

Só uma dúvida… Por que na linha

s3 = "" + s1.charAt(s1.length() - 2) + s1.charAt(s1.length() - 2);

Se eu não colocar “” no início ocorre erro de tipos incompatíveis???
Obrigado novamente :grin:

é porque a soma de dois caracteres character da um int. É colocado “” na frente para forçar ele somar o valor String. Ele começa somando uma string vazia ao caracter, que entao resulta em outra string e depois essa outra string é somada ao outro caracter resultando em outra string.

basicamente:
char + char = int
String + char = String

testa isso:

		String x = "brasil";
		System.out.println(x.charAt(0) + x.charAt(1));
		System.out.println("" + x.charAt(0) + x.charAt(1));
		System.out.println(x.charAt(0) + x.charAt(1) + "");

Perceba que no primeiro e terceiro System.out.println a saida é 212. O primeiro ocorreu aquela soma: char + char = int, logo imprimiu um valor inteiro. O segundo eu primeiro criei a string “”, depois somei a ela um char que resultou em outra string e depois somei essa outra string a outro char, resultando em uma string. O terceiro primeiro (que é parecido com o segundo mas a posição do “” é diferente) somei os chars (que resulta em int) e depois esse int somei a string, logo imprimiu um valor String do valor inteiro da soma dos chars.

É só entender como funciona os operadores e a ordem como são executados.

bele!?

Entendi… esse conceito eu realmente não tinha… Valeu cara, muito obrigado pela ajuda.