Autor |
Mensagem |
Gianyny Veterano |
# jul/09
Ai pessoal, to aqui pelejando pra estudar pra uma prova só que não estou entendendo umas linhas de código aqui. Quem puder me ajudar.
/* Criar uma classe que receba uma String e forneça os seguintes métodos: * a. int contarOcorrencias(String s): método que deverá contar quantas * ocorrências da String 's' existem na String informada. * * b. String inverteString(): retorna a String informada de trás pra frente(espelhada). */ package PROVA2BIM;
import javax.swing.JOptionPane;
public class exercicio1 { static String frase; public static void main(String[] args) {
frase = JOptionPane.showInputDialog(null, "Entre com a String");
String letra = JOptionPane.showInputDialog(null,"Entre com a letra"); JOptionPane.showMessageDialog(null,"Ocorrencias da letra: "+contarOcorrencias(letra));
JOptionPane.showMessageDialog(null,frase +" \nA palavra invertida é: "+inverterFrase()); }
private static int contarOcorrencias(String s){ char letra = s.charAt(0); int tam = frase.length(); int cont = 0;
for(int i=0; i<tam; i++){ if(frase.charAt(i)==letra){ cont++; } } return cont; } private static String inverterFrase(){ int tam = frase.length(); String inversa=" "; for(int i=tam-1; i>=0; i--){ inversa = inversa + frase.charAt(i);
} return inversa; } }
Tipo, esses métodos contarOcorrencias e inverterString eu não to entendendo nada. Alguém me explica ai.
|
Sumerrew Veterano |
# jul/09
· votar
Gianyny Bom, vamos por partes. Não entendo muito, mas vamos lá.
private static int contarOcorrencias(String s){ char letra = s.charAt(0); int tam = frase.length(); int cont = 0;
nao sei se eh private static int ali, nao seria só pivate static contarOcorrencias(String s){ ?
Bom, aí cria-se uma variável "letra" do tipo char, que recebe o valor do que tem na String s, na posição 0...se fosse s.charAt(5), iria receber a letra que está na posição 5, e assim por diante... ai cria-se uma variavel "tam" do tipo integer, que recebe o comprimento da string frase, o .length() serve pra pegar o comprimento, ok... e a variável "cont" do tipo integer, serve como contador, e está sendo inicializada com 0.
for(int i=0; i<tam; i++){ if(frase.charAt(i)==letra){ cont++; } } return cont; }
Nesse laço, ele faz um if pra ver se o caracter que está na variável "i" é igual ao que está na variável letra, se for, ele aumenta o cont, entçao quando sair do laço ele mostra o cont, que vai estar com o valor que vai ser a quantidade de letras que tem...
private static String inverterFrase(){ int tam = frase.length(); String inversa=" "; for(int i=tam-1; i>=0; i--){ inversa = inversa + frase.charAt(i);
} return inversa; } o integer "tam" recebe o comprimento da variavel "frase", e é inicializada uma String "inversa" sem nada dentro, ou seja, que comando inútil, era só fazer String s; aí no laço, se o I for igual a variavel TAM -1, a variavel inversa recebe ela + o caracter que está na posição 1, e assim vai, até inverter tudo e sair do laço, e aí retorna a variável inversa..
JOptionPane.showMessageDialog(null,frase +" \nA palavra invertida é: "+inverterFrase()); aqui tem que botar ali no inverterFrase(inversa), senão não vai mostrar...
Cara, tu que fez esse código aí?
|
DarkMakerX Veterano |
# jul/09
· votar
Odeio Java >:(
Mas pelo que entedi, esse inverterFrase recebe o tamanho da string. Daí ele começa pelo ultimo caractere desse tamanho pego Ex. "Casa" = 4 caracteres. Então ele pega o 4.
Daí ele começa a juntar os caracteres Ex. O caractere 4 de "Casa" é "a". Então ele pega "a". Daí o contador diminui -1, ou seja ele vai pegar o caractere 3, que é o "s". E assim ele monta a string invertida.
|
Sumerrew Veterano |
# jul/09
· votar
eu to sem IDE aqui pra testar, to baixando Eclipse, pq formatei essa bosta ontem...então, jaja eu rodo aqui e vejo oq tem de errado, e se falei alguma merda aí, é pq to surtando com os trabalhos da facul e 400 linguagens pra fazer ao mesmo tempo hahaha
|
Sumerrew Veterano |
# jul/09
· votar
Ae, testei, ta funcionando beleza.
|
Gianyny Veterano |
# jul/09
· votar
DarkMakerX Valeu.
Sumerrew Cara, tu que fez esse código aí?
Não, foi meu professor, to aqui com 7 programas pra estudar, tá foda, a prova é segunda. Bom, você esclareceu boa parte das minhas duvidas, mais o que
for(int i=0; i<tam; i++){ if(frase.charAt(i)==letra){ cont++; } } return cont; }
Nesse laço, ele faz um if pra ver se o caracter que está na variável "i" é igual ao que está na variável letra, se for, ele aumenta o cont, entçao quando sair do laço ele mostra o cont, que vai estar com o valor que vai ser a quantidade de letras que tem...
Eu não tinha idéia pra que era essa condição, agora ficou claro. Só não entendi é o porque dessa linha:
int cont = 0;
Sendo que no for eu já declarei um contador i.
|
Sumerrew Veterano |
# jul/09
· votar
ali onde eu falei pra botar o (frase) dentro, ta errado, eu q to viajando, pq ali ele passa algum valor...hahaha
|
Sumerrew Veterano |
# jul/09
· votar
Gianyny Só não entendi é o porque dessa linha:
int cont = 0;
Sendo que no for eu já declarei um contador i. Não sei se quando vc delcara ele já sai com 0 ou -1. Sei lá. Aí serve pra ele realmente entender que o cont é pra valer 0, inicializando mesmo a variável..
|
Gianyny Veterano |
# jul/09
· votar
Sumerrew
Não querendo abusar da boa vontade, mais esse aqui também tá dificil, ve se você entende ai:
/*Criar um método Java que receba uma palavra (String) como parâmetro e retorne * verdadeiro ou falso (boolean) caso a palavra fornecida seja palíndroma. Um * palíndromo é uma palavra que pode ser lida da esquerda para a direita ou da * direita para esquerda obtendo a mesma palavra ex: Ana,Arara,osso,etc. */ package PROVA2BIM;
import javax.swing.JOptionPane;
public class exercicio2 { public static void main(String[] args) { String palavra = JOptionPane.showInputDialog(null, "Entre com a palavra:"); if(verificaPalindroma(palavra)){ JOptionPane.showMessageDialog(null,palavra + " é palindroma"); } else { JOptionPane.showMessageDialog(null,palavra + " não é palindroma"); } } private static boolean verificaPalindroma(String palavra){ String invertida = ""; int tam = palavra.length();//tamanho da palavra //Laço para inverter a palavra palavra = palavra.toLowerCase(); for(int i=tam-1; i>=0; i--){ invertida = invertida + palavra.charAt(i); } if (palavra.equals(invertida)){ //Verifica se as duas variaveis String são inguais return true; } else { return false; } }
}
|
Sumerrew Veterano |
# jul/09
· votar
Gianyny me add no msn, jack__seven@hotmail.com, por lá é mais facil falar oks
|
Sumerrew Veterano |
# jul/09
· votar
Gianyny esse aí, bem por cima, faz praticamente a mesma coisa que o anterior, só nao conta quantas letras de cada tem na palavra
ele guarda a palavra num lugar, faz uma cópia pra outro lugar, inverte a copia, e compara, se for igual, é palindromo, senao nao, barbada =)
|
xMarkosx Veterano |
# out/09
· votar
Bom aproveitando esse topico de um amigo...
queria perguntar se alguem sabe como abrir algum projeto no enterprise architect.... cria um até que dei conta mais agora quero abrir o infiliz e não tá abrindo ¬¬ ....
|