Exercicos simples

Bom pessoal sou novo por aqui… estou iniciando a materia Java na faculdade e precisava de uma ajudinha de vocês… atualmente uso o eclipse para programar. Bem é o seguinte eu não consegui entender muita coisa dessa materia por isso tenhu um exercico aqui pra fazer que de jeito nenhum consigo fazer e é bem facil, se algum de vocês poder me ajudar agradeceria. Os exercicos são:

OBS: Os dois arquivos do 2º exercicio estão em anexo

  1. Criar uma classe que receba uma String no seu construtor 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 na construção da classe;
    b. String inverterString(): retorna a String informada no construtor de traz pra frente (espelhada);

  2. Nos exemplos fornecidos em aula, existe um novo pacote “br.ufpr.lp2noite.exercicios1” com a classe ProcessadorArquivo e a interface IProcessadorArquivo. Implemente a interface e faça um exemplo para mostrar as linhas de um arquivo qualquer na tela.

se alguem poder me ajudar agradeceria… obrigado

Oi,

Como vc disse os exercícios são bem simples mesmo, por isso não podemos ajudar se vc não tentar resolver primeiro.

O que posso fazer, caso o material que vc tem não ajude, é indicar uma boa apostila de OO, que com certeza vai te ajudar muito.

Tente resolver e se tiver dificuldades e só postar que damos uma mão.

[]s

[quote=Sandro.Santos]Oi,

Como vc disse os exercícios são bem simples mesmo, por isso não podemos ajudar se vc não tentar resolver primeiro.

O que posso fazer, caso o material que vc tem não ajude, é indicar uma boa apostila de OO, que com certeza vai te ajudar muito.

Tente resolver e se tiver dificuldades e só postar que damos uma mão.

[]s[/quote]

Brigado pela apostila… bem to desdeo inicio da semana tentando resolver isso, o problema é que é pra amanha, tentei varias coisas mas nada deu certo… mas tudo bem eu irei ler a apostila e tentar resolver… se ate as 22:00 eu não conseguir eu retorno… obrigado!!!

Ola

Como se trata de um exercicio, vou te dar a barbada: as strings possuem um método chamado toCharArray(), que retorna um array de chars

Se vc tem um array de caracteres, então pode inverter este array, então pode recompor uma string, então vc tem uma string invertida.

Agora vem a parte dificil: eu sou um maldito sadico e vou te dar o código incompleto pra vc estudar. para que o método funcione 100% energia na carcaça vc tem que descobrir (como ? estudando ou tentando bastante) o que colocar nas ‘???’

[code]public class AlgumaCoisa {

public static String inverte() {		
	char [] a = palavra_definida_na_classe.toCharArray();		
	
	chat [] b = ???
	
	for(int i=0;i<a.length;i++) {
			b[i] = a[???];
	}

	// qual sera o return correto ??? 
	// so completanto o metodo acima !
	
	return new String(b);
	return b.toString();
}

public static void main(String[] args) {
	
	System.out.println(inverte("alo alo marciano!"));

}

}[/code]

agora para contar a ocorrencia de uma determinada string vc teria que usar o metodo indexOf(String s,int x), que faz o seguinte: procura, a partir da posicao x, a string s. se encontrar vai retornar a posição de s dentro da string, caso contrario retorna -1.

agora, questão concentual: quantas vezes ‘ss’ aparece dentro da string ‘ssssassss’ ? são 4 ou 6 vezes ?

se são 6, o codigo aqui te dá o que tu quer, senão tem que adaptar…

[code] public static int contarOcorrencias(String procurada) {

	int a = -1, c= -1;
	
	do {
		c++;
		a = mystring.indexOf(procurada,a+1);			
	} while(a != -1);
	
	return c;
}

[/code]

olha eu li as apostilas e pelo que entendi to fazendo desse jeito. Obrigado pela ajuda…

package br.com.ufpr.geny;
public class AlgumaCoisa {

public static String inverterString() {		
	char [] a = sasasasa.toCharArray();		
	
	char [] b = AlgumaCoisa(args[0]);
	
	for(int i=0;i<a.length;i++) {
			b[i] = a[];
	}

	
	
	return new String(b);
	return b.toString();
}

public static void main(String[] args) {
	
	System.out.println(inverterString());

}

public static int contarOcorrencias(String s) {

	int a = -1, c= -1;
	
	do {
		c++;
		String mystring = AlgumaCoisa.inverterString();
		a = mystring.indexOf(s,a+1);			
	} while(a != -1);
	
	return c;
}

}

So não consigo sabe oq vai dentro desse a[???] e no outro coloquei o que achava que era certo por favor se puder me explicar oq tem de errado eu agradeceria. E naquele mystring.indexOf(procurada,a+1) ele me da erro dizendo que o mystring tem que ser ou uma variavel ou um campo. Por isso inicializei ele… Obrigado

vamos por partes:

vc tem o um vetor com 5 elementos:

a[0], a[1], a[2], a[3] e a[4]

ai vc quer contruir um vetor de forma que:

b[0] = a[4];
b[1] = a[3];
b[2] = a[2];
b[3] = a[1];
b[4] = a[0];

como construir um laço dessa forma? vc pode fazer algo assim

for(i=0;i<5;i++){
b[i] = a[X];
}

entretanto X tem a seguinte propriedade: quando i vale 0, X é 4. quando i é 4, X vale 0. o que acontece se a gente trocar X por 4-i ?

b[i] => b[0] = a[4-i] => a[4];
b[i] => b[1] = a[4-i] => a[3];
b[i] => b[2] = a[4-i] => a[2];
b[i] => b[3] = a[4-i] => a[1];
b[i] => b[4] = a[4-i] => a[0];

bingo. agora o que é 4-i ? é o valor do tamanho do vetor (5) menos 1 menos a variavel do laço, i. então a resposta seria.

for(int i=0;i<a.length;i++) {
b[i] = a[a.length - i - 1];
}

quando a mystring, vc não tem ideia do que ela pode ser??

nenhuma… o prof sabe que não ta explicando bem a materia por isso ele quer testar o nosso conhecimento então não precisa nem resolver so que eu sou fã de programação por isso queria resolver esse problema mas msm sendo facil de resolver se torna dificil pra mim… to com a documentação API aberta, varias apostilas mas não to conseguindo entrar nessa programação… .sobre o mystring não tenho nenhuma ideia…
vc tem msn ou skype?

o de inverter eu consegui fazer… mas o de ocorrencais de S eu não sei oq significa o mystring. Procurei no API mas não me explicou muito se puder me ajudar agradeceria, obrigado.

mystring é a string onde vc ta procurando as ocorrencias.

Ficou assim então:
package br.com.ufpr;

public class Ocorrencias {

public static int contarOcorrencias(String s) {

	int a = -1, c= -1;
	
	do {
		c++;
		a = "sasasasa".indexOf(s,a+1);			
	} while(a != -1);
	
	return c;
}

public static void main(String[] args) {

	System.out.println(contarOcorrencias("sasasasa"));

}
}

o problema é que sempre ta me retornando 1, você sabe o porque obrigado!!!

Bom

quantas vezes a string ‘sasasasa’ aparece em ‘sasasasa’ ?

e se vc fizer:
System.out.println(contarOcorrencias(“sa”));

o que vc espera ?

Inverter um String:

public static String inverterString(String str) {
    return StringBuffer(str).reverse().toString();
}