Problema array

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

image

image

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].

botei o codigo-fonte.

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…

image

1 curtida

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