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 ; }}