Salve , ho completato degli esercizi per un corso Java che sto seguendo , siamo appena al secondo giorno , e ci avevano assegnato una serie di esercizi , 13 per la precisione ... Vorrei sapere se esiste un modo per abbellire il tutto o magari ridefinirlo per renderlo meno anonimo .... il codice è questo :
Test
public class Test {
public static void main(String[] args) {
Esercizi es = new Esercizi();
es.eseguiEsercizi();
}
}
Esercitazione
import java.util.Scanner;
import java.util.Arrays;
public class Esercizi {
private Scanner input = new Scanner(System.in);
private String[] opzioni = new String[] {
"\nScegli l'esercizio da svolgere\n",
"1) pariDispari",
"2) maggioreMinore",
"3) contaVerticale",
"4) contaOrizzontale",
"5) semaforo",
"6) totalizzatore",
"7) stampaVettore",
"8) nominativi",
"9) ordinamento",
"10) cercaNelVettore",
"11) stampaTabellina",
"12) meteo",
"13) Esci dal programma\n",
"Digitare un numero e premere Invio: "
};
public void eseguiEsercizi() {
int scelta;
char repeatFlag = 'n';
do {
stampaMenu();
scelta = leggiIntero();
do {
switch(scelta) {
case 1:
pariDispari();
break;
case 2:
minoreMaggiore();
break;
case 3:
contaVerticale();
break;
case 4:
contaOrizzontale();
break;
case 5:
semaforo();
break;
case 6:
totalizzatore();
break;
case 7:
stampaVettore();
break;
case 8:
nominativi();
break;
case 9:
ordinamento();
break;
case 10:
cercaNelVettore();
break;
case 11:
stampaTabellina();
break;
case 12:
meteo();
break;
case 13:
input.close();
System.out.println("\n\nProgramma terminato.");
break;
default:
System.out.println("\nScelta non valida.");
}
if (scelta > 0 && scelta < 13) {
do {
System.out.print("\n\nRipetere l'esercizio? (S/N): ");
repeatFlag = input.nextLine().charAt(0);
}while( repeatFlag != 's' && repeatFlag != 'S' && repeatFlag != 'n' && repeatFlag != 'N');
}
}while(repeatFlag != 'n' && repeatFlag != 'N');
} while(scelta != 13);
}
private void stampaMenu() {
int i;
for (i=0; i<opzioni.length-1; i++) {
System.out.println(opzioni[i]);
}
System.out.print(opzioni[i]);
}
private int leggiIntero() {
int valore = 0;
boolean flag;
do {
flag = false;
try {
valore = Integer.parseInt(input.nextLine());
}
catch(NumberFormatException n){
System.err.print("\nNon hai inserito un numero. Riprova: ");
flag = true;
}
}while(flag);
return valore;
}
private String leggiStringa() {
String stringa = null;
try {
stringa = input.nextLine();
}
catch(IllegalStateException i){
System.err.println("\nImpossibile leggere da input: lo scanner non è stato aperto o è stato chiuso anzitempo.");
}
return stringa;
}
private void pariDispari() {
int n;
char continueFlag;
do {
System.out.println("\n\nVerifica se il valore inserito è pari o dispari.");
System.out.print("Inserisci un numero e premi Invio: ");
n = leggiIntero();
if ((n&1) == 0) {
System.out.println("\nIl numero è pari.");
}
else {
System.out.println("\nIl numero è dispari.");
}
do {
System.out.print("Continuare? (S/N): ");
continueFlag = input.nextLine().charAt(0);
}while( continueFlag != 's' && continueFlag != 'S' && continueFlag != 'n' && continueFlag != 'N');
}while (continueFlag != 'n' && continueFlag != 'N');
}
private void minoreMaggiore() {
int a,b;
char continueFlag;
do {
System.out.println("\n\nVerifica se due valori inseriti sono uguali, altrimenti verifica qual è il maggiore.");
System.out.print("Inserisci il primo numero e premi Invio: ");
a = leggiIntero();
System.out.print("Inserisci il secondo numero e premi Invio: ");
b = leggiIntero();
if (a>b) {
System.out.println("\nIl numero maggiore è: " + a);
}
else if (a<b) {
System.out.println("\nIl numero maggiore è: " + b);
}
else {
System.out.println("\nI due numeri sono uguali.");
}
do {
System.out.print("Continuare? (S/N): ");
continueFlag = input.nextLine().charAt(0);
}while( continueFlag != 's' && continueFlag != 'S' && continueFlag != 'n' && continueFlag != 'N');
}while (continueFlag != 'n' && continueFlag != 'N');
}
private void contaVerticale() {
int i,v;
System.out.println("\n\nConta fino ad un certo valore e visualizza i numeri in verticale.");
System.out.print("Inserisci fino a quale numero contare e premi Invio: ");
v = leggiIntero();
System.out.print("\n");
for (i=0; i<v+1; i++) {
System.out.println(i);
}
}
private void contaOrizzontale() {
int i,v;
System.out.println("\n\nConta fino ad un certo valore e visualizza i numeri in un elenco orizzontale.");
System.out.print("Inserisci fino a quale numero contare e premi Invio: ");
v = leggiIntero();
System.out.print("\n");
for (i=0; i<v; i++) {
System.out.print(i + ", ");
}
System.out.print(i + ".");
}
private void semaforo() {
String colore, messaggio;
System.out.println("\n\nIndica un colore e ricevi un avviso associato.");
System.out.print("Digita il nome di un colore (rosso, verde o arancione) e premi Invio: ");
colore = leggiStringa().toLowerCase();
System.out.print("\n");
switch(colore){
case "rosso":
messaggio = "ALT";
break;
case "verde":
messaggio = "VAI";
break;
case "arancione":
messaggio = "ATTENZIONE";
break;
default:
messaggio = "NON SEI AL SEMAFORO";
}
System.out.println(messaggio);
}
private void totalizzatore() {
char continueFlag;
int x=0, n=0;
do {
System.out.println("\n\nAggiunge numeri finché l'utente vuole e visualizza somma totale e media.");
System.out.print("Digita un numero e premi Invio: ");
x += leggiIntero();
n++;
do {
System.out.print("Continuare? (S/N): ");
continueFlag = input.nextLine().charAt(0);
}while( continueFlag != 's' && continueFlag != 'S' && continueFlag != 'n' && continueFlag != 'N');
}while (continueFlag != 'n' && continueFlag != 'N');
System.out.print("\n\nSomma = " + x + " ; Media = " + (double)x/n);
}
private void stampaVettore() {
char continueFlag;
int i;
int[] vett = new int[10];
System.out.println("\n\nCrea un vettore di 10 interi e lo visualizza.\n");
for (i=0; i<vett.length; i++) {
System.out.print("\nInserisci un valore all'indice " + i + " del vettore: ");
vett[i] = leggiIntero();
}
do {
System.out.print("\nVisualizzare per (r)iga o per (c)olonna? (R/C): ");
continueFlag = input.nextLine().charAt(0);
}while( continueFlag != 'r' && continueFlag != 'R' && continueFlag != 'c' && continueFlag != 'C');
if (continueFlag == 'c' || continueFlag == 'C') {
for (i=0; i<vett.length; i++) {
System.out.println(vett[i]);
}
}
else {
for (i=0; i<vett.length-1; i++) {
System.out.print(vett[i] + ", ");
}
System.out.print(vett[i] + ".");
}
}
private void nominativi() {
int i;
String[] nomi = new String[10];
System.out.println("\n\nCrea un elenco di 10 nominativi.\n");
for (i=0; i<nomi.length; i++) {
System.out.print("\nInserisci un nome all'indice " + i + " dell'elenco: ");
nomi[i] = leggiStringa();
}
System.out.println("\n\nElenco nominativi:\n\n");
for (i=0; i<nomi.length; i++) {
System.out.println(i + ") " + nomi[i]);
}
}
private void ordinamento() {
int i;
String[] nomi = new String[10];
System.out.println("\n\nCrea un elenco in ordine lessicografico di 10 nominativi.\n");
for (i=0; i<nomi.length; i++) {
System.out.print("\nInserisci un nome all'indice " + i + " dell'elenco: ");
nomi[i] = leggiStringa();
}
System.out.println("\n\nElenco nominativi ordinato:\n\n");
Arrays.sort(nomi);
for (i=0; i<nomi.length; i++) {
System.out.println(i + ") " + nomi[i]);
}
}
private void cercaNelVettore() {
boolean found=false;
int i;
String[] nomi = new String[10];
String target;
System.out.println("\n\nCrea un elenco di 10 nominativi.\n");
for (i=0; i<nomi.length; i++) {
System.out.print("\nInserisci un nome all'indice " + i + " dell'elenco: ");
nomi[i] = leggiStringa();
}
System.out.print("\n\nDigita un nominativo da cercare: ");
target = leggiStringa();
i=0;
while (i < nomi.length && !found) {
if (nomi[i].equals(target)) {
found = true;
System.out.println("\n\nTrovato " + target + " all'indice " + i + " dell'elenco.");
}
else {
i++;
if (i==nomi.length)
System.out.println("\n\nNominativo non trovato.");
}
}
}
private void stampaTabellina() {
int i,j;
System.out.println("\n\nStampa di una tavola pitagorica.\n");
for (j=0; j<11; j++) {
for(i=0; i<11; i++) {
System.out.print(i*j + " ");
}
System.out.print("\n");
}
}
private void meteo() {
int i,j;
double[][] meteoTab = new double[7][4];
String[] days = new String[]{"Lunedì","Martedì","Mercoledì","Giovedì","Venerdì", "Sabato", "Domenica"};
String[] intervals = new String[]{"00:00-06:00","06:00-12:00","12:00-18:00","18:00-24:00"};
System.out.println("Crea una matrice con le temperature di tutti i giorni della settimana, rilevate ogni 6 ore.");
System.out.print("\n");
for (j=0; j<7; j++) {
for (i=0; i<4; i++){
meteoTab [j][i] = (Math.random()*100)%40;
}
}
for (j=0; j<7; j++) {
System.out.print(days[j] + ": ");
for (i=0; i<4; i++){
System.out.print( "(" + intervals[i] + ") " + String.format("%.1f", meteoTab[j][i]) + " °C ");
}
System.out.print("\n");
}
}
}
Ovviamente ci sono i rispettivi package che non ho copiato ... sono alle prime con Java avendo fatto principalmente , sempre , C++ .... Ad Ingegneria Informatica si fa poco di coding e quindi sto cercando di imparare il più possibile dal corso e da una guida cartacea di De Sio Cesari .... a quanto ho capito Java 'obbliga' a programmare ad oggetti , mentre C++ ti permette di scegliere anche un approccio funzionale