Salve a tutti, sono nuovo su questo forum. Ho provato a scrivere un programma in Java ma continua a darmi errore e non capisco il motivo. Potreste aiutarmi? (P.S. Vorrei risolvere senza dover usare il costrutto try...catch)
Ho creato un classe Studente così definita:
package myPackage;
import java.util.Scanner;
public class Studente {
private String nome;
private String cognome;
private int età;
private double [] voti;
private double media;
boolean promosso;
public Studente (String nome, String cognome, int età)
{
double [] voti = new double[3];
double somma=0;
this.nome = nome;
this.cognome = cognome;
this.età = età;
Scanner input = new Scanner(System.in);
for (int i=0; i<voti.length; i++)
{
System.out.print("Inserire il voto di "+this.nome+" "+this.cognome+": ");
voti[i] = input.nextDouble();
somma = somma + voti[i];
}
input.close();
this.media = somma/3;
if (this.media >= 6)
this.promosso = true;
else
this.promosso = false;
}
public void stampa()
{
System.out.println("Studente: " + this.nome + " " + this.cognome + ", " + this.età + " anni");
System.out.println("Media voto: " + this.media);
if (this.promosso)
System.out.println("Esito: Promosso");
else
System.out.println("Esito: Bocciato");
}
public String getNominativo()
{
return this.nome+" "+this.cognome;
}
public int getEtà()
{ return this.età;}
public double getMedia()
{return this.media;}
}
Mentre il Main è il seguente:
import java.util.Scanner;
import myPackage.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
String nome, cognome;
int età;
Studente [] stud = new Studente[5];
Scanner sc = new Scanner(System.in);
for (int i=0; i<stud.length; i++)
{
System.out.print("Inserire il nome dello studente: ");
nome = sc.nextLine();
System.out.print("Inserire il cognome dello studente: ");
cognome = sc.nextLine();
System.out.print("Inserire l'età di "+nome + " " + cognome + ": ");
età = sc.nextInt();
stud[i] = new Studente(nome, cognome, età);
stud[i].stampa();
}
}
}
In fase di esecuzione per il primo oggetto gira, ossia mi chiede nome, cognome, età e i voti del primo studente, poi stampando tutti i dati. Quando però passa al secondo studente, ossia al secondo ciclo del for, mi dà il seguente errore:
Inserire il nome dello studente:
Inserire il cognome dello studente: Exception in thread "main" java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
at Main.main(Main.java:21)