Exercício que até o momento parece não ser muito fácil de resolver
Escreva uma classe para representar um Aluno. Adicione atributos
relacionados às características de um Aluno, como nome, matricula,
curso que está matriculado, nome de 3 disciplinas que está
cursando e as notas dessas 3 disciplinas. Desenvolva um método
para verificar se o aluno está aprovado (nota maior ou igual a 7) em
uma determinada disciplina. Escreva um programa para testar essa
classe, que pede as informações do aluno ao usuário e ao final
informa o nome das disciplinas, mostra as notas e mostra se o aluno
foi aprovado ou não.
O primeiro passo seria identificar as entidades presentes. Eu enxergo duas entidades que podem ser facilmente transformadas em classes: Aluno e Curso Aluno: matricula, nome, curso// curso deve ser do tipo Curso Curso: nome, nota
Além dos atributos que devem ser privados, crie métodos públicos(get e set) para ambas as classes. Crie ainda um método público getMedia na classe Aluno.
Use os métodos da classe Scanner para ler os dados e o system.out.print para iimprimir tanto os pedidos de dados quanto o resultado.
Escreva um programa para testar essa
classe, que pede as informações do aluno ao usuário e ao final
informa o nome das disciplinas, mostra as notas e mostra se o aluno
foi aprovado ou não.
Como posso criar uma classe que testa outra classe?
Na verdade você pode criar apenas uma classe Aluno com os atributos nome, matrícula, curso, disciplina1, disciplina2 e disciplina3 e os métodos para ler(get) e gravar(set) nos seus atributos. Dentro da mesma classe você cria um método estático de nome main que vai instanciar a classe Aluno, carregar os seus dados, calcular a média e informar se passou ou não de ano.
public static void main(String[] args) {
if ( aluno.getMedia() >= 7.0 ) {
system.out.println(aluno.getNome() + " passou no curso de " + aluno.getCurso());
} else { if ( aluno.getMedia() < 5.0 ) {
system.out.println(aluno.getNome() + " foi reprovado no curso de " + aluno.getCurso());
} else { system.out.println(aluno.getNome() + " ficou em recuperação no curso de " +
aluno.getCurso());
}
Estou tentando fazer algo com base no seu exemplo, tipo queria pegar esses dados via entrada e daí fazer esse treco acontecer ( aviso: exemplo errado )
import java.util.Scanner;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//
// declarações de variavéis
//
Double adicioneDisciplina1, adicioneDisciplina2, adicioneDisciplina3, adicioneNota1, adicioneNota2, adicioneNota3;
Int informeMatricula;
String informeNome;
//
// usando e imprimindo as variavéis
//
system.out.println("Adicione a matricula: " + informeMatricula);
informeMatricula = sc.nextLine();
//
system.out.println("Informe o nome: " + informarNome);
informeNome = sc.nextLine();
//
system.out.println("Adicione o curso: " + adicionarCurso);
adicionarCurso = sc.nextLine();
//
system.out.println("Adicione a disciplina 1: " + adicioneDisciplina1 );
adicioneDisciplina1 = sc.nextLine();
system.out.println("Adicione a nota 1: " + adicioneNota1);
adicioneNota1 = sc.nextLine();
//
system.out.println("Adicione a disciplina 2: " + adicioneDisciplina2);
adicioneDisciplina3 = sc.nextLine();
system.out.println("Adicione a nota 2: " + adicioneNota2);
adicioneNota2 = sc.nextLine();
//
system.out.println("Adicione a disciplina 3: " + adicioneDisciplina3);
adicioneDisciplina3 = sc.nextLine();
system.out.println("Adicione a nota 3: " + adicioneNota3);
adicioneNota3 = sc.nextLine();
//
//
// Atributos
//
Aluno aluno = new Aluno();
aluno.setMatricula = informeMatricula;
// "111";
aluno.setNome = informeNome;
// "fulano";
aluno.setCurso = adicioneCurso;
// "Disciplina 1";
aluno.setDisciplina1 = adicioneDisciplina1;
// "Disciplina 2";
aluno.setNota1 = adicioneNota1;
// 10.0;
aluno.setDisciplina2 = adicioneDisciplina2;
// "Disciplina 3";
aluno.setNota2 = adicioneNota2;
// 4.5;
aluno.setDisciplina3 = adicioneDisciplina3;
// "Disciplina 4";
aluno.setNota3 = adicionarNota3;
// 6.5;
if ( aluno.getMedia() >= 7.0 ) {
system.out.println(aluno.getNome() + " passou no curso de " + aluno.getCurso());
}else{
if(aluno.getMedia() < 5.0 ) {
system.out.println(aluno.getNome() + " foi reprovado no curso de " + aluno.getCurso());
}else{ system.out.println(aluno.getNome() + " ficou em recuperação no curso de " +
aluno.getCurso());
}
}
Estou tentando resolver esse problema ( aviso: exemplo errado )
Escreva uma classe para representar um Aluno. Adicione atributos relacionados às características de um Aluno, como nome, matricula, curso que está matriculado, nome de 3 disciplinas que está cursando e as notas dessas 3 disciplinas. Desenvolva um método
para verificar se o aluno está aprovado (nota maior ou igual a 7) em uma determinada disciplina. Escreva um programa para testar essa classe, que pede as informações do aluno ao usuário e ao final informa o nome das disciplinas, mostra as notas e mostra se o aluno
foi aprovado ou não.
import java.util.Scanner;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Int informarMatricula;
Double informarNota1, informarNota2, informarNota3;
String informarNome, informarCurso, informarDisciplina1, informarDisciplina2, informarDisciplina3;
//
// Atributos
//
Aluno aluno = new Aluno();
public Int getMatricula() {
System.out.println("Adicione a matricula: " + informarMatricula);
informarMatricula = sc.nextInt();
aluno.setMatricula = informarMatricula;
return matricula;
}
public String getNome() {
System.out.println("Informe o nome: " + informarNome);
informarNome = sc.nextLine();
aluno.setNome = informarNome;
return nome;
}
public String getCurso() {
System.out.println("Adicione o curso: " + informarCurso);
informarCurso = sc.nextLine();
aluno.setCurso = informarCurso;
return curso;
}
public String getDisciplina1() {
System.out.println("Adicione a disciplina 1: " + informarDisciplina1 );
informarDisciplina1 = sc.nextLine();
aluno.setDisciplina1 = informarDisciplina1;
return valorunitario;
}
public Double getNota2() {
System.out.println("Adicione a nota 1: " + informarNota1);
informarNota1 = sc.nextDouble();
aluno.setNota1 = informarNota1;
return valorunitario;
}
public String getDisciplina2() {
System.out.println("Adicione a disciplina 2: " + informarDisciplina2);
informarDisciplina2 = sc.nextLine();
aluno.setDisciplina2 = informarDisciplina2;
return valorunitario;
}
public Double getNota2() {
System.out.println("Adicione a nota 2: " + informarNota2);
informarNota2 = sc.nextDouble();
aluno.setNota2 = informarNota2;
return valorunitario;
}
public String getDisciplina3() {
System.out.println("Adicione a disciplina 3: " + informarDisciplina3);
informarDisciplina3 = sc.nextLine();
aluno.setDisciplina3 = informarDisciplina3;
return disciplina3;
}
public Double getNota3() {
System.out.println("Adicione a nota 3: " + informarNota3);
informarNota3 = sc.nextDouble();
aluno.setNota3 = informarNota3;
return nota3;
}
media = ((informarNota1+informarNota2+informarNota3)/3);
public void setDisciplina1(Double informarNota1) {
if (aluno.getMedia()>=7.0) {
System.out.println(aluno.getNome() + " passou na curso disciplina " + aluno.setDisciplina1() + " no curso de " + aluno.getCurso());
} else {
if(aluno.getMedia()<7.0) {
System.out.println(aluno.getNome() + " foi reprovado no curso de " + aluno.setDisciplina1() + " no curso de " + aluno.getCurso());
}
this.informarNota1 = informarNota1;
}
public void setDisciplina2(Double informarNota2) {
if (aluno.getMedia()>=7.0) {
System.out.println(aluno.getNome() + " passou na curso disciplina " + aluno.setDisciplina1() + " no curso de " + aluno.getCurso());
} else { if(aluno.getMedia()<7.0) {
System.out.println(aluno.getNome() + " foi reprovado no curso de " + aluno.setDisciplina1() + " no curso de " + aluno.getCurso());
}
this.informarNota2 = informarNota2;
}
public void setDisciplina3(Double informarNota3) {
if (aluno.getMedia()>=7.0) {
System.out.println(aluno.getNome() + " passou na curso disciplina " + aluno.setDisciplina1() + " no curso de " + aluno.getCurso());
}
else { if(aluno.getMedia()<7.0) {
System.out.println(aluno.getNome() + " foi reprovado no curso de " + aluno.setDisciplina1() + " no curso de " + aluno.getCurso());
}
this.informarNota3 = informarNota3;
}
public void setMatricula(Int Matricula) {
this.nome = nome;
}
public void setNome(String Nome) {
this.nome = nome;
}
public void setDisciplina1(String Disciplina1) {
this.disciplina1 = disciplina1;
}
public void setDisciplina2(String Disciplina2) {
this.disciplina2 = disciplina2;
}
public void setDisciplina3(String Disciplina3) {
this.disciplina3 = disciplina3;
}
public void setNota1(Double nota1) {
this.nota3 = nota3;
}
public void setNota2(Double nota2) {
this.nota2 = nota2;
}
public void setNota3(Double nota3) {
this.nota3 = nota3;
}
}
}
}
// Por que você está imprimindo a variável não inicializada?!
system.out.println("Adicione a matricula: " + informeMatricula); // Não deveria ser sc.NextInt()?
informeMatricula = sc.nextLine(); Onde está a definição da classe Aluno?
Aluno aluno = new Aluno();
Você criou os métodos e atributos da classe Aluno fora dela, aliás, você nem a criou.
public class Aluno {
// construtor padrão
public Aluno () {
}
// construtor com parâmetros
public Aluno(int matricula, String nome, ... double nota3) {
this.matricula = matricula;
...
this.nota3 = nota3;
}
Depois que eu li no enunciado que a aprovação é por disciplina e não para o curso e assim não precisa ser calculada a média.
Você também está assumindo que a construção switch - case é uma estrutura de repetição, além de mistura uma variável numérica media com uma string "informarDisciplina1"
media = ( media = ((informarNota1+informarNota2+informarNota3)/3); // numérico
switch(media) {
case "informarDisciplina1"
Mais ou menos. O nome que você colocar dentro do cabeçalho do construtor é o nome que você vai usar no corpo dele para atribuir o valor. Se forem iguais, você deve usar o recurso do this, senão usa os dois sem prefixá-los.
Exemplos:
public class Pessoa() { private String nome;
public Pessoa(String nome) { this.nome = nome;
}
}
ou
public class Pessoa() { private String nome;
public Pessoa(String _nome) { nome = _nome;
}
}
Ou você atribui todos os valores usando o construtor ou cria getters e setters para cada elemento que precise ser carregado: public class Aluno() { private int informarMatricula; public Aluno(int matricula, …) { informarMatricula = matricula; … } public void setMatricula(int matricula) { informarMatricula = matricula; } }
Aí dentro do main…
você lê a entrada e depois seta no objeto instanciado aluno: int matricula;
system.out.print("Informe a matrícula: ");
matricula = sc.nextInt();
aluno.setMatricula(matricula);