Ciao, sto studiando java sul libro della Deitel. Essendo all'inizio avevo capito che bastasse creare un solo oggetto per la classe Scanner, anche se avessi avuto la necessità di più input...e in effetti in esercizi precedenti funzionava così..ma ora non se nn creo un secondo oggetto, all'inserimento dell'importo per il secondo impiegato mi da errore:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextDouble(Scanner.java:2387)
at Stipendio.main(Stipendio.java:35)
Mi potreste spiegare l'arcano??
Alex
**************************************************
Di seguito la classe Impiegato e la sua implementazione Stipendio:
codice:
/*
* Esercizio 3.14
*/
public class Impiegato {
private String nome;
private String cognome;
private double stipendio;
//Costruttore di classe
public Impiegato(String name,String surname,double stipend){
nome = name;
cognome = surname;
stipendio = stipend;
}
// Imposta il nome
public void setNome(String name){
nome = name;
}
//Imposta il cognome
public void setCognome(String surname){
cognome = surname;
}
//Imposta lo stipendio
public void setStipendio(double stipend){
if (stipend <= 0)
stipendio = 0.0;
if (stipend > 0)
stipendio = stipend;
}
//recupera il nome
public String getNome(){
return nome;
}
//recupera il cognome
public String getCognome(){
return cognome;
}
//recupera lo stipendio
public double getStipendio(){
return stipendio;
}
//Calcoli stipendio annuale
public double getStipendioAnnuale(){
double stipAnnuale = stipendio * 12;
return stipAnnuale;
}
//Concessione aumento del 10%
public double getAumento(){
double aumento = (getStipendioAnnuale() * 10)/100 + getStipendioAnnuale();
return aumento;
}
}
**********************************************
/*
* Esercizio 3.14
*/
import java.util.Scanner;
public class Stipendio {
public static void main(String[] args) {
//variabili
String nome,cognome;
double stipendio;
//Creo due oggetti della classe Impiegato e setto i costruttori
Impiegato cassiere = new Impiegato("Not available","Not available",0.0);
Impiegato sportellista = new Impiegato("Not available","Not available",0.0);
//Visualizzo dati iniziali
System.out.printf("%s%s\n%s\n%.1f\n","DATI INIZIALI Impiegato 1:\n\n",
cassiere.getNome(),cassiere.getCognome(),cassiere.getStipendio());
System.out.printf("%s%s\n%s\n%.1f\n","\n\nDATI INIZIALI Impiegato 2:\n\n",
sportellista.getNome(),sportellista.getCognome(),sportellista.getStipendio());
//Imposto i dati del primo impiegato
Scanner in = new Scanner(System.in);
//Scanner in2 = new Scanner(System.in);
System.out.println("\n\nInserire il dati del primo impiegato: ");
nome = in.nextLine();
cognome = in.nextLine();
stipendio = in.nextDouble();
//Passo i dati alla classe Impiegato
cassiere.setNome(nome);
cassiere.setCognome(cognome);
cassiere.setStipendio(stipendio);
//Dati del secondo impiegato
System.out.println("\nInserire il dati del secondo impiegato: ");
nome = in.nextLine();
cognome = in.nextLine();
stipendio = in.nextDouble();
//Passo i dati del secondo impiegato
sportellista.setNome(nome);
sportellista.setCognome(cognome);
sportellista.setStipendio(stipendio);
//visualizzazione dopo le operazioni
System.out.printf("%s%s\n%s\n%.1f\n","DATI AGGIORNATI Impiegato 1:\n\n",
cassiere.getNome(),cassiere.getCognome(),cassiere.getStipendio());
System.out.printf("%s%s\n%s\n%.1f\n","\n\nDATI AGGIORNATI Impiegato 2:\n\n",
sportellista.getNome(),sportellista.getCognome(),sportellista.getStipendio());
// Stampo i stipendi annuali
System.out.printf("%s%.1f\n","Stipendio Annuale Impiegato 1:\n\n",
cassiere.getStipendioAnnuale());
System.out.printf("%s%.1f\n","Stipendio Annuale Impiegato 2:\n\n",
sportellista.getStipendioAnnuale());
// e i relativi aumenti
System.out.printf("%s%.1f\n","Stipendio Impiegato 1 con aumento del 10%:\n\n",
cassiere.getAumento());
System.out.printf("%s%.1f\n","Stipendio Impiegato 2 con aumento del 10%:\n\n",
sportellista.getAumento());
}
}