Boa noite, estou começando em programação orientada a objetos, porém estou com dificuldades no seguinte exercício:
Exercício 1: Livro
Neste exercício, você deve criar um projeto chamado MeuLivro no software NetBeans e também construir uma classe chamada Livro.java que contenha os seguintes atributos:
String titulo;
int ano;
String editora;
String autor;
// implementar os métodos setters e getters e os demais métodos:
public String obterAutorFormatoAbnt ()
public String obterInformacaoCompletaLivro ()
O método obterAutorFormatoAbnt retorna uma String contendo o valor do atributo autor no formato: SOBRENOME, Nome. Ex.: José de Alencar = ALENCAR, José de. O sobrenome deve estar em maiúsculo, seguido de vírgula, somado ao restante do nome e do ponto final.
O método obterInformacaoCompletaLivro retorna uma String no seguinte formato: ALENCAR, José de. Iracema. editora: Typ. de Viana & Filhos. 1865. Ou seja, Autor. Título. Editora: nome da editora. Ano.
Nesse sentido, você deve criar uma instância da classe livro, solicitar os valores para o usuário e, em seguida, chamar os referidos métodos escrevendo o resultado em vídeo. O programa executa apenas uma vez.
A minha maior dificuldade é implementar estes dois métodos:
public String obterAutorFormatoAbnt ()
public String obterInformacaoCompletaLivro ()
Fico no aguardo de alguém puder me ajudar
- Quais são suas dificuldades?
- O professor não ensinou criar um classe e colocar os métodos e seus atributos?
- O que você fez até o momento?
Observação: Se eu fizer você não aprende, é muito fácil fazer esse exercício, mas, estamos aqui para tirar as suas duvidas, quais são as suas verdadeiras duvidas?
A parte do nome do autor não é tão obvia, por isso a implementei abaixo e comentei as linhas.
public class Test {
static String formataNome(String nome) {
// Pega a posição do espaço entre a última e a penúltima palavra
int ultimoEspaco = nome.lastIndexOf(' ');
// Pega a string que vai do primeiro caracter até o último espaço
String parte1 = nome.substring(0, ultimoEspaco);
// Pega a string que vai do último espaço até o final
String parte2 = nome.substring(ultimoEspaco).trim().toUpperCase();
// Formata a string e retorna
return String.format("%s, %s.", parte2, parte1);
}
public static void main(String[] args) {
String nome = "José de Alencar";
System.out.println(formataNome(nome));
}
}
Está parte lhe ajudará a implementar o outro método que falta.
Classe:
public class Livro {
private String titulo;
private int ano;
private String editora;
private String autor;
public String getTitulo() {
return titulo;
}
public int getAno() {
return ano;
}
public String getEditora() {
return editora;
}
public String getAutor() {
return autor;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public void setAno(int ano) {
this.ano = ano;
}
public void setEditora(String editora) {
this.editora = editora;
}
public void setAutor(String autor) {
this.autor = autor;
}
public String obterAutorFormatoAbnt() {
if (autor.length() > 0){
int lastIndex = autor.lastIndexOf(' ');
String end = autor
.substring(lastIndex, autor.length())
.trim()
.toUpperCase();
String first = autor.substring(0, lastIndex).trim();
return String.format("%s, %s.", end, first);
}
return null;
}
public String obterInformacaoCompletaLivro (){
return String.format("%s%s.%s.%s.", obterAutorFormatoAbnt(), titulo, editora, ano);
}
}
Código:
Livro liv = new Livro();
liv.setAno(1865);
liv.setAutor("José de Alencar");
liv.setEditora("Typ de Viana & Filhos");
liv.setTitulo("Iracema");
System.out.println(liv.obterAutorFormatoAbnt());
System.out.println(liv.obterInformacaoCompletaLivro());
Código em execução online
Observação: não fiz todas as verificações, fiz a grosso modo.
2 curtidas
String nome = "José de Alencar";
String[] sobrenome = nome.split(" ");
System.out.println(sobrenome[sobrenome.length - 1]
.toUpperCase()+","+sobrenome[0]);
Acho que isso vc pode colocar no método que retorna o nome do autor, susbtituir ( System.out.println() por return no método de tipo String.
Queria agradecer pelas ajuda de todos.
Obrigado!