Boa Tarde, estou arrumando um exercicio, mas me deparei com um erro, e não estou conseguindo resolver, e queria uma ajuda. Obrigado(a)


import CursoJava.Exercicios.ClassesDosExercicios.Ex7_Estudante_01_11_2019;
import java.util.Scanner;
public class Ex7_Estudante_Main_01_11_2019 {
public static void main(String[] args) {
Ex7_Estudante_01_11_2019 estudante = new Ex7_Estudante_01_11_2019();
Scanner in = new Scanner(System.in);
System.out.println("Digite o nome do estudante");
System.out.printf("-> ");
estudante.setNome(in.next());
System.out.println("Digite a idade do " + estudante.getNome());
System.out.printf("-> ");
estudante.setIdade(in.nextInt());
for (int i = 0; i < estudante.getNotas().length; i++){
System.out.println("Digite a " + (i + 1) + " nota do " + estudante.getNome());
System.out.printf("-> ");
estudante.setNotas[i](in.nextDouble());
}
estudante.media();
}
}
class estudante
package CursoJava.Exercicios.ClassesDosExercicios;
public class Ex7_Estudante_01_11_2019 {
private String nome, estado;
private int idade;
private double[] notas;
private double soma, media;
public void imprime() {
System.out.println("O nome do aluno é: " + this.nome);
System.out.println("A idade do aluno é: " + this.idade);
for (int i = 0; i < this.notas.length; i++) {
System.out.println("A" + (i + 1) + "º nota do aluno é: " + this.notas[i]);
}
System.out.println("O aluno(a): " + this.nome + " foi " + this.estado + " média: " + Math.round(this.media));
}
public void media() {
if (this.notas == null){
System.err.println("O aluno(a): " + this.nome + "não possui notas");
return;
}
for (double nota : this.notas) {
this.soma += nota;
}
this.media = (this.soma / this.notas.length);
if (this.media >= 6) {
this.estado = "aprovado(a)";
} else {
this.estado = "reprovado(a)";
}
imprime();
}
public void setNome(String nome) {
if (this.nome == null){
System.err.println("O aluno(a) não possui nome");
return;
}
this.nome = nome;
}
public void setIdade(int idade) {
if (this.idade <= 0){
System.err.println("O aluno(a) não possui idade");
return;
}
this.idade = idade;
}
public void setNotas(double[] notas) {
this.notas = notas;
}
public String getNome() {
return this.nome;
}
public int getIdade() {
return this.idade;
}
public double[] getNotas() {
return this.notas;
}
}
O erro indica que o método setNotas(double[])
espera um array
de double
como parâmetro, mas você está passando um único double
.
Obs.: para código-fonte use texto e não imagens. Se eu quisesse ou precisasse testar o seu código, não teria como copiar da imagem (e eu não perderia tempo fazendo-o), mas simplesmente copiaria o colaria (caso fosse apresentado textualmente) para realizar os testes. Isso aumenta as suas chances de obter uma resposta satisfatória.
1 curtida
sim, mas não sei como setar notas na posição o array [i].
Fazendo algumas alterações (comentários no código):
1 - Classe Estudante:
public class Estudante {
private String nome;
private String estado;
private int idade;
private double[] notas = new double[4];
private double soma, media;
public void imprimir(){
System.out.println("Nome: " + this.nome);
System.out.println("Idade: " + this.idade);
for(int i = 0; i < this.notas.length; i++) {
System.out.println((i + 1) + "º nota: " + this.notas[i]);
}
System.out.println("O aluno(a): " + this.nome + " foi " + this.estado + " média: " + Math.round(this.media));
}
public void exibirMedia(){
if(this.notas == null){
System.err.println("O aluno(a): " + this.nome + "não possui notas");
return;
}
for(double nota : this.notas){
this.soma += nota;
}
this.media = (this.soma / this.notas.length);
if(this.media >= 6){
this.estado = "aprovado(a)";
}else{
this.estado = "reprovado(a)";
}
imprimir();
}
public void setNome(String nome){
/*
* this.nome faz referência ao nome do objeto na memória, que será null porque
*a atribuição só ocorre no final. Logo deve testar o argumento e não o atributo
*/
if(nome == null){
System.err.println("Nome inválido!");
return;
}
this.nome = nome;
}
public void setIdade(int idade){
if (idade <= 0){
System.err.println("Idade inválida!");
return;
}
this.idade = idade;
}
public void setNotas(int index, double nota) {
this.notas[index] = nota;
}
public String getNome() {
return nome;
}
public int getIdade() {
return idade;
}
public double[] getNotas() {
return notas;
}
}
2 - Classe Principal
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Estudante estudante = new Estudante();
Scanner leitor = new Scanner(System.in);
System.out.print("Digite o nome do(a) estudante: ");
estudante.setNome(leitor.nextLine());
System.out.print("Digite a idade do aluno(a) " + estudante.getNome() + ": ");
estudante.setIdade(leitor.nextInt());
System.out.print("Informe as notas...\n");
for (int i = 0; i < estudante.getNotas().length; i++){
System.out.print("Digite a " + (i + 1) + "ª nota do(a) "
+ estudante.getNome() + ": ");
/*
* Passei o índice, além da nota
*/
estudante.setNotas(i, leitor.nextDouble());
System.out.println("");
}
estudante.exibirMedia();
}
}
Rodando…

1 curtida
muito obrigado, eu olhei oq mudou, e entendi meu erro.