Java problemi di inizializzazione
Salve.
Ho realizzato il seguente programma, e sicuramente non è una delle migliori soluzioni.
Il problema nasce da quel minimoTollerato. Inizialmente avevo inizializzato la variabile numeroMaggiore a zero, ma se inserivo solo numeri negativi, diceva comunque che il numero maggiore era 0. Come si poteva risolvere in maniera più elegante o comunque migliore?
Grazie.
Ho realizzato il seguente programma, e sicuramente non è una delle migliori soluzioni.
Il problema nasce da quel minimoTollerato. Inizialmente avevo inizializzato la variabile numeroMaggiore a zero, ma se inserivo solo numeri negativi, diceva comunque che il numero maggiore era 0. Come si poteva risolvere in maniera più elegante o comunque migliore?
/*
* Scrivere un programma che chiede all'utente di inserire un numero intero n
* positivo e poi chiede all'utente n numeri decimali. Il programma stampa il
* massimo dei numeri inseriti. Ad esempio, se l'utente inserisce n=5 e poi
* 3.2, -6.5, 4.7, 0.2, 2.9, il programma stampa "il massimo dei numeri
* inseriti è 4.7".
*/
package esercizi;
import java.util.Scanner;
/**
*
* @author Lionel
*/
public class MaxDecimali {
public static void main(String [] args){
int numeriDaInserire;
float numeroInserito;
float numeroMaggiore;
float minimoTollerato = -999999999;
int i;
Scanner in = new Scanner(System.in);
do{
System.out.println("Inserisci la quantità di numeri che vuoi inserire");
numeriDaInserire = in.nextInt();
}
while(numeriDaInserire == 0);
i = 0;
numeroMaggiore = minimoTollerato;
do{
System.out.println("Inserisci i " +(numeriDaInserire-i) +" numeri (I decimali devono essere separati dalla virgola e non dal punto).");
numeroInserito = in.nextFloat();
if(numeroInserito > numeroMaggiore){
numeroMaggiore = numeroInserito;
}
i++;
}
while(i<numeriDaInserire);
System.out.println("Il massimo dei numeri inseriti è " +numeroMaggiore);
}
}Grazie.
Risposte
Questa è la mia soluzione
import java.util.Scanner ;
class numeri{
public static void main( String[] argv ) {
Scanner tastiera = new Scanner( System.in) ;
System.out.println("inserire un numero intero n ,successivamente n numeri decimali");
int n = tastiera.nextInt() ;
double[] contenitore = new double[n] ; // creo un array nel quale inseriro' tutti i valori decimali
for( int i= 0 ; i< n ; i++) {
double x = tastiera.nextDouble() ; // qui prendo i valori decimali
contenitore[i]= x ; // gli inserisco nell' array
}
double massimo = max( contenitore) ; // trovo il massimo all'interno dell' array
System.out.println( "il massimo dei numeri inseriti è " + massimo) ; // lo stampo
}
public static double max( double[] x) { // qui trovo il massimo all'interno dell' array come dicevo
double max = x[0]; // suppongo che il massimo sia il primo elemento
for( int i =1 ; i <= x.length-1; i++) {
if(x[i] > max) max = x[i]; // se invece trovo un numero piu' grande lo sostituisco e cosi via...alla fine max sara' il vero massimo...
}
return max ;
}}