Ciao a tutti,
per imparare ad usare l'ereditarietà dei metodi e delle classi ho cominciato a scrivere un semplice programmino/giochino:
Ho due classi figlie, "FiatPanda" e "Porsche911", entrambe ereditano da altre due classi genitori ("Veicolo" e "Auto") i metodi e i vari parametri. Questo programmino deve far scegliere all'utente che auto utilizzare e in base a quella scelta si avranno, oltre alle caratteristiche comuni prese da "Veicolo" e "Auto", anche le proprie dell'auto esclusive. Una volta scelta, l'utente seleziona la direzione (S/D), la marcia (R/1/2/...) e la velocità (0-250 KM/H) e in base ai valori inseriti il programma sorteggia randomicamente se l'utente abbia fatto o no un incidente.
ES:
Fiat Panda 2^ marcia a 70 KM/H direzione destra: incidente non avvenuto.
Porsche 911 5^ marcia a 230 KM/H direzione sinistra: incidente avvenuto.
N.B.: i valori delle marce sono fittizi e con l'unico scopo di rendere lo sviluppo più confortevole.
Ad influenzare il random ci sarebbero (sempre io riesca ad implementarli) dei parametri casuali come ad esempio la pioggia, il motore ingolfato (più probabile per la Fiat), guidatore ubriaco, poco traffico...
Non ho ancora fatto niente però, ho solo cominciato a creare i 3 metodi principali nella classe "Veicolo", ma mi esce questo errore:
/---------------------------------------------------------------------------------------------------------------------\
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at Veicolo.numeroMarcia(Veicolo.java:67)
at Main.main(Main.java:8)
\ ---------------------------------------------------------------------------------------------------------------------/
Posto qui il codice della classe "Main" e "Veicolo":
Scusate per la mancanza di commenti ma non ho fatto in tempo a metterli.
P.S.: il metodo kilometriOrari non l'ho ancora testato, se ci fossero errori di sintassi è per quello.
per imparare ad usare l'ereditarietà dei metodi e delle classi ho cominciato a scrivere un semplice programmino/giochino:
Ho due classi figlie, "FiatPanda" e "Porsche911", entrambe ereditano da altre due classi genitori ("Veicolo" e "Auto") i metodi e i vari parametri. Questo programmino deve far scegliere all'utente che auto utilizzare e in base a quella scelta si avranno, oltre alle caratteristiche comuni prese da "Veicolo" e "Auto", anche le proprie dell'auto esclusive. Una volta scelta, l'utente seleziona la direzione (S/D), la marcia (R/1/2/...) e la velocità (0-250 KM/H) e in base ai valori inseriti il programma sorteggia randomicamente se l'utente abbia fatto o no un incidente.
ES:
Fiat Panda 2^ marcia a 70 KM/H direzione destra: incidente non avvenuto.
Porsche 911 5^ marcia a 230 KM/H direzione sinistra: incidente avvenuto.
N.B.: i valori delle marce sono fittizi e con l'unico scopo di rendere lo sviluppo più confortevole.
Ad influenzare il random ci sarebbero (sempre io riesca ad implementarli) dei parametri casuali come ad esempio la pioggia, il motore ingolfato (più probabile per la Fiat), guidatore ubriaco, poco traffico...
Non ho ancora fatto niente però, ho solo cominciato a creare i 3 metodi principali nella classe "Veicolo", ma mi esce questo errore:
/---------------------------------------------------------------------------------------------------------------------\
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at Veicolo.numeroMarcia(Veicolo.java:67)
at Main.main(Main.java:8)
\ ---------------------------------------------------------------------------------------------------------------------/
Posto qui il codice della classe "Main" e "Veicolo":
Java:
public class Main {
public static void main (String [] args) {
Veicolo testFunzionare = new Veicolo ();
testFunzionare.sinistraDestra();
testFunzionare.numeroMarcia();
testFunzionare.kilometriOrari();
}
}
Java:
import java.util.Scanner;
public class Veicolo {
private String direzione = "", marciaStringa = "";
private int marciaNumero = 0, velocità = 0, controlloMarcia = 0, controlloKilometri = 0;
public Veicolo (/*String direzione, int marcia, int velocità*/) {
// this.direzione = direzione;
// this.marcia = marcia;
// this.velocità = velocità;
}
public void sinistraDestra () {
Scanner inputValore = new Scanner (System.in);
System.out.print ("In che direzione vorresti andasse la tua auto? [S/D]: ");
do {
direzione = inputValore.next ();
direzione = direzione.toUpperCase ();
if (!direzione.equals ("S") && !direzione.equals ("D"))
System.out.print ("Hai inserito una direzione SBAGLIATA. [S/D]: ");
} while (!direzione.equals ("S") && !direzione.equals ("D"));
inputValore.close ();
}
public void numeroMarcia () {
Scanner inputValore = new Scanner (System.in);
System.out.print ("Che marcia vorresti usare? [R/1/2/3/4/5]: ");
boolean controlloValore;
do {
controlloValore = inputValore.hasNextInt ();
if (controlloValore) {
marciaNumero = inputValore.nextInt ();
if (marciaNumero < 1 || marciaNumero > 5) {
System.out.print ("Hai inserito una marcia SBAGLIATA. [R/1/2/3/4/5]: ");
continue;
}
controlloMarcia = 1;
}
else {
marciaStringa = inputValore.next ();
marciaStringa = marciaStringa.toUpperCase ();
if (!marciaStringa.equals("R")) {
System.out.print ("Hai inserito una marcia SBAGLIATA. [R/1/2/3/4/5]: ");
inputValore.nextLine ();
continue;
}
controlloMarcia = 2;
}
} while ((marciaNumero < 1 || marciaNumero > 5) && !marciaStringa.equals("R"));
//inputValore.close ();
}
public void kilometriOrari () {
Scanner inputValore = new Scanner (System.in);
System.out.println ("A quanti KM/H vorresti andare? [0 - 250]. ");
System.out.println ("Marcia R: 0-25.");
System.out.println ("Marcia 1: 0-50.");
System.out.println ("Marcia 2: 50-100.");
System.out.println ("Marcia 3: 100-150.");
System.out.println ("Marcia 4: 150-200.");
System.out.println ("Marcia 5: 200-250.");
System.out.print ("Inserisci QUI: ");
boolean controlloValore;
do {
controlloValore = inputValore.hasNextInt ();
if (controlloValore) {
velocità = inputValore.nextInt ();
if (velocità < 0 || velocità > 250) {
System.out.print ("Hai inserito dei KM/H SBAGLIATI. [0-250]: ");
continue;
}
if (controlloMarcia == 1) {
switch (marciaNumero) {
case 1:
if (velocità > 50) {
System.out.print ("KM/H non validi per la marcia. [0-50]: ");
continue;
}
System.out.println ("Hai deciso di andare a " + velocità + " KM/H");
controlloKilometri ++;
break;
case 2:
if (velocità < 50 || velocità > 100) {
System.out.print ("KM/H non validi per la marcia. [50-100]: ");
continue;
}
System.out.println ("Hai deciso di andare a " + velocità + " KM/H");
controlloKilometri ++;
break;
case 3:
if (velocità < 100 || velocità > 150) {
System.out.print ("KM/H non validi per la marcia. [100-150]: ");
continue;
}
System.out.println ("Hai deciso di andare a " + velocità + " KM/H");
controlloKilometri ++;
break;
case 4:
if (velocità < 150 || velocità > 200) {
System.out.print ("KM/H non validi per la marcia. [150-200]: ");
continue;
}
System.out.println ("Hai deciso di andare a " + velocità + " KM/H");
controlloKilometri ++;
break;
case 5:
if (velocità < 200 || velocità > 250) {
System.out.print ("KM/H non validi per la marcia. [200-250]: ");
continue;
}
System.out.println ("Hai deciso di andare a " + velocità + " KM/H");
controlloKilometri ++;
break;
}
}
else {
if (velocità > 25) {
System.out.print ("KM/H non validi per la marcia. [200-250]: ");
continue;
}
System.out.println ("Hai deciso di andare a " + velocità + " KM/H");
controlloKilometri ++;
}
}
else {
System.out.print ("Hai inserito una LETTERA nel valore. Reinserisci: ");
inputValore.nextLine ();
}
} while ((velocità < 0 || velocità > 250) && controlloKilometri != 1);
inputValore.close ();
}
}
Scusate per la mancanza di commenti ma non ho fatto in tempo a metterli.
P.S.: il metodo kilometriOrari non l'ho ancora testato, se ci fossero errori di sintassi è per quello.