Como resolver esse exercício que até o momento parece não ser muito fácil de resolver?

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.

Qual a dificuldade para com esse exercício?

1 curtida

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.

1 curtida

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? :face_with_raised_eyebrow:

Valeuuuuuu :smiley:

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) {

     Aluno aluno = new Aluno();
    aluno.setMatricula = “111”;
    aluno.setNome = “fulano”;
    aluno.setCurso = “Matemática”;
    aluno.setDisciplina1 = “Álgebra”; aluno.setNota1 = 10.0;
    aluno.setDisciplina2 = “Geometria”; aluno.setNota2 = 4.5;
    aluno.setDisciplina3 = “Estatística”; aluno.setNota3 = 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());
    }

}

1 curtida

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());
 
 }
 }

pessoal fiz desta maneira ( aviso: exemplo errado )



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();

System.out.println("Adicione a matricula: " + informarMatricula);
informarMatricula = sc.nextInt();
aluno.setMatricula = informarMatricula; 

System.out.println("Informe o nome: " + informarNome);
informarNome = sc.nextLine();
aluno.setNome = informarNome; 

System.out.println("Adicione o curso: " + informarCurso);
informarCurso = sc.nextLine();
aluno.setCurso = informarCurso; 

System.out.println("Adicione a disciplina 1: " + informarDisciplina1 );
informarDisciplina1 = sc.nextLine();
aluno.setDisciplina1 = informarDisciplina1; 

System.out.println("Adicione a nota 1: " + informarNota1);
informarNota1 = sc.nextDouble();
aluno.setNota1 = informarNota1; 

System.out.println("Adicione a disciplina 2: " + informarDisciplina2);
informarDisciplina2 = sc.nextLine();
aluno.setDisciplina2 = informarDisciplina2; 

System.out.println("Adicione a nota 2: " + informarNota2);
informarNota2 = sc.nextDouble();
aluno.setNota2 = informarNota2; 

system.out.println("Adicione a disciplina 3: " + informarDisciplina3);
informarDisciplina3 = sc.nextLine();
aluno.setDisciplina3 = informarDisciplina3; 

system.out.println("Adicione a nota 3: " + informarNota3);
informarNota3 = sc.nextDouble();
aluno.setNota3 = informarNota3; 

media = ((informarNota1+informarNota2+informarNota3)/3);

switch(media){

    case "informarDisciplina1"
    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()); 
    } 

    break;

    case "informarDisciplina2"
    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()); 
    } 
    
    break;

    case "informarDisciplina3"
    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()); 
    } 
    
    break;

     } 
   }
 }


O que é o erro?

Main.java:89: error: class, interface, or enum expected

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;
}



     } 
   }
 }


Int informeMatricula;
String informeNome;

// 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();

1 curtida

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"
2 curtidas

Assim?


import java.util.Scanner;
public Aluno(int informarMatricula, double informarNota1, double informarNota2, double informarNota3, String informarNome, String informarCurso, String informarDisciplina1, String informarDisciplina2, String informarDisciplina3 ) {

this.informarMatricula = matricula;
this.informarNome = nome;
this.informarCurso = curso;

this.informarDisciplina1 = disciplina1;
this.informarNota1 = nota1;

this.informarDisciplina2 = disciplina2;
this.informarNota2 = nota2;

this.informarDisciplina3 = disciplina3;
this.informarNota3 = nota3;

}

Como posso usar a entrada e preencher ?

Tipo this.informarMatricula = matricula;

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;
   }
}

1 curtida

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);

1 curtida

Valeuuuu

Valeuuu

Obrigado pelas informações.

Agora nenhuma, aprendi algumas coisas que vão me ajudar a resolver mais problemas Java