Ajuda com manipulação de String

Galera, meu professor pediu um exercício para a nota… Preciso da ajuda de vocês pra dar aquele empurrão, por favor!!!

Seguinte, deve-se entrar com uma data pelo Scanner (exemplo: 02/07/1992) e sair 02 de Julho de 1992… Até aí é muito fácil, mas não pode usar For, Array e pode usar apenas um If.

Na hora, resolvi o problema com a função replace, hahahahah! Ele não aceitou, óbvio!

Na segunda tentiva, usei por tratamento de string… Em um variável MESES coloquei “01Janeiro02Fevereiro03Março…12Dezembro” daí por tratamento de string eu consegui resolver o problema de novo funcionando perfeitamente…

MAS, meu querido professor disse-me que devo tirar esses número… deve ficar assim “JaneiroFevereiroMarçoAbril…Dezembro”… Ele ensinou-nos encapsulamento, será que devo usar isso? Atribuir tudo em um objeto? Ainda não entendi muito bem o uso do encapsulamento atribuindo tudo em um Objeto :cry:

Aguardo respostas… por favor!!!

Desde já muito obrigado!!!

[code]public class Teste {

public Teste(){
	String data = "02/07/1992";
	String dia = data.split("/")[0];
	String mes = retornaMesByNumero(data.split("/")[1]);
	String ano = data.split("/")[2];
	System.out.println(dia + " de " + mes + " de " + ano);
}

public static void main(String[] args) {
	new Teste();
}

public String retornaMesByNumero(String numero){
	String mes="";
	switch (Integer.parseInt(numero)) {
	case 1:
		mes = "Janeiro";
		break;
	case 2:
		mes = "Fevereiro";
		break;
	case 3:
		mes = "Março";
		break;
	case 4:
		mes = "Abril";
		break;
	case 5:
		mes = "Maio";
		break;
	case 6:
		mes = "Junho";
		break;
	case 7:
		mes = "Julho";
		break;
	case 8:
		mes = "Agosto";
		break;
	case 9:
		mes = "Setembro";
		break;
	case 10:
		mes = "Outubro";
		break;
	case 11:
		mes = "Novembro";
		break;
	case 12:
		mes = "Dezembro";
		break;
	default:
		break;
	}
	return mes;
}

}[/code]

Bem provável que seu professor vai reclamar com alguma coisa… :roll:

Aliás, um pouco sobre encapsulamento, pois não sei bem onde ele queria que fosse aplicado o encapsulamento, e não sei se você também entendeu o conceito: http://pt.wikipedia.org/wiki/Encapsulamento

Eu sei que esses exercícios são para demonstrar um princípio (e não para serem usados na prática), mas desta vez nem o princípio eu sei qual é.

Eu só sei que na prática, uma das maneiras para formatar uma data num padrão é usando o SimpleDateFormat ou o String.format. O pessoal aqui recomenda o uso da biblioteca Joda Time.

[quote=marcelo.bellissimo][code]public class Teste {

public Teste(){
	String data = "02/07/1992";
	String dia = data.split("/")[0];
	String mes = retornaMesByNumero(data.split("/")[1]);
	String ano = data.split("/")[2];
	System.out.println(dia + " de " + mes + " de " + ano);
}

public static void main(String[] args) {
	new Teste();
}

public String retornaMesByNumero(String numero){
	String mes="";
	switch (Integer.parseInt(numero)) {
	case 1:
		mes = "Janeiro";
		break;
	case 2:
		mes = "Fevereiro";
		break;
	case 3:
		mes = "Março";
		break;
	case 4:
		mes = "Abril";
		break;
	case 5:
		mes = "Maio";
		break;
	case 6:
		mes = "Junho";
		break;
	case 7:
		mes = "Julho";
		break;
	case 8:
		mes = "Agosto";
		break;
	case 9:
		mes = "Setembro";
		break;
	case 10:
		mes = "Outubro";
		break;
	case 11:
		mes = "Novembro";
		break;
	case 12:
		mes = "Dezembro";
		break;
	default:
		break;
	}
	return mes;
}

}[/code]

Bem provável que seu professor vai reclamar com alguma coisa… :roll:

Aliás, um pouco sobre encapsulamento, pois não sei bem onde ele queria que fosse aplicado o encapsulamento, e não sei se você também entendeu o conceito: http://pt.wikipedia.org/wiki/Encapsulamento[/quote]

Este código devia estar em dos topicos sobre POG

[quote=luciano@@][quote=marcelo.bellissimo][code]public class Teste {

public Teste(){
	String data = "02/07/1992";
	String dia = data.split("/")[0];
	String mes = retornaMesByNumero(data.split("/")[1]);
	String ano = data.split("/")[2];
	System.out.println(dia + " de " + mes + " de " + ano);
}

public static void main(String[] args) {
	new Teste();
}

public String retornaMesByNumero(String numero){
	String mes="";
	switch (Integer.parseInt(numero)) {
	case 1:
		mes = "Janeiro";
		break;
	case 2:
		mes = "Fevereiro";
		break;
	case 3:
		mes = "Março";
		break;
	case 4:
		mes = "Abril";
		break;
	case 5:
		mes = "Maio";
		break;
	case 6:
		mes = "Junho";
		break;
	case 7:
		mes = "Julho";
		break;
	case 8:
		mes = "Agosto";
		break;
	case 9:
		mes = "Setembro";
		break;
	case 10:
		mes = "Outubro";
		break;
	case 11:
		mes = "Novembro";
		break;
	case 12:
		mes = "Dezembro";
		break;
	default:
		break;
	}
	return mes;
}

}[/code]

Bem provável que seu professor vai reclamar com alguma coisa… :roll:

Aliás, um pouco sobre encapsulamento, pois não sei bem onde ele queria que fosse aplicado o encapsulamento, e não sei se você também entendeu o conceito: http://pt.wikipedia.org/wiki/Encapsulamento[/quote]

Este código devia estar em dos topicos sobre POG[/quote]

Concordo, mas eu fiz isso porque tenho quase certeza (se não 100% de certeza) que o professor dele vai reclamar se usar alguma classe especial pra formatar datas, ou coisa do tipo… eu sei como é esse tipo de professor, você descobre uma maneira fácil, mas ele reclama e quer que você faça da maneira mais difícil e porca possível…

Eu lembro de um professor meu que pediu pra gerar um código que “jogava dados”, ou seja, usei logo de cara o Math.random() pra gerar números aleatórios, e adivinha o que ele me falou? Te dou uma chance… :lol:

Já enfrentei um cara assim e só teve uma alternativa, tive q ir na cordenação de curso.

Ah, eu poderia ter feito isso também… mas eu pensei “que se dane” e fiz do jeito dele mesmo… pelo menos a turma que eu andava acabou aprendendo bem, com ou sem as aulas dele, isso porque éramos auto-didatas… depois, mais pro final do ano, esse professor até vinha perguntar algumas coisas pra gente, hahaha… 8)

Só fazendo mestrado para roubar a vaga desses caras.

[quote=marcelo.bellissimo][code]public class Teste {

public Teste(){
	String data = "02/07/1992";
	String dia = data.split("/")[0];
	String mes = retornaMesByNumero(data.split("/")[1]);
	String ano = data.split("/")[2];
	System.out.println(dia + " de " + mes + " de " + ano);
}

public static void main(String[] args) {
	new Teste();
}

public String retornaMesByNumero(String numero){
	String mes="";
	switch (Integer.parseInt(numero)) {
	case 1:
		mes = "Janeiro";
		break;
	case 2:
		mes = "Fevereiro";
		break;
	case 3:
		mes = "Março";
		break;
	case 4:
		mes = "Abril";
		break;
	case 5:
		mes = "Maio";
		break;
	case 6:
		mes = "Junho";
		break;
	case 7:
		mes = "Julho";
		break;
	case 8:
		mes = "Agosto";
		break;
	case 9:
		mes = "Setembro";
		break;
	case 10:
		mes = "Outubro";
		break;
	case 11:
		mes = "Novembro";
		break;
	case 12:
		mes = "Dezembro";
		break;
	default:
		break;
	}
	return mes;
}

}[/code]

Bem provável que seu professor vai reclamar com alguma coisa… :roll:

Aliás, um pouco sobre encapsulamento, pois não sei bem onde ele queria que fosse aplicado o encapsulamento, e não sei se você também entendeu o conceito: http://pt.wikipedia.org/wiki/Encapsulamento[/quote]

Muitooooo Obrigado, marcelo.bellissimo!

Pensei em usar o switch mas pensei que o professor não aceitaria, hehehehe

Vou falar com ele esta sexta… trago o resultado pra vocês!

Sabe, o professor explicou em sala de aula que poderíamos colocar tudo em um objeto só… pensei que tinha algum macete como

“if(objeto==Integet.parseInt(nummes)) {
return
}”

sei lá o que imaginei, hehe

Mais uma vez muito obrigado :slight_smile: Concordo com o luciano@@ também… só fazendo mestrado pra roubar a vaga dos caras :stuck_out_tongue:

Valeu!