Java problemi di inizializzazione

Lionel2
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?

/*
 * 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
valesyle92
Questa è la mia soluzione :-D
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 ; 
   
}}








Rispondi
Per rispondere a questa discussione devi prima effettuare il login.