PDA

View Full Version : [Java]Esercizietto Min Max Media Somma


Redvex
27-11-2007, 09:40
Il classico esercizio che da bravo niubbo non riesco a svolgere (solo 1 parte):cry:
import javax.swing.*;
public class MinMax {
public static void main (String[] args){
double Media;
int Min=0,Max=0, Somma=0,j;
String Lunghezza = JOptionPane.showInputDialog("Inserisci il totale dei numeri su cui vuoi operare");
int i = Integer.parseInt(Lunghezza);
int [] Vettore = new int[i];
for(j=0;j<i;j++)
{
String k = JOptionPane.showInputDialog("Inserisci il numero " + (j+1));
int Numero = Integer.parseInt(k);
Vettore[j]= Numero;
Somma = Somma+Vettore[j];
Min = Vettore[0];
if (Vettore[j]>Max)
{
Max = Vettore[j];
}
if (Vettore[j]<Min)
{
Min = Vettore[j];
}

}

Media = (double)Somma/i;
System.out.print("La somma è "+Somma+" Il minimo è: "+Min+ " Il massimo è: "+Max+ " La media è: "+Media);
}

}





Il problema è il calcolo del minimo poichè una volta che ripete il ciclo for non rimane più il risultato minimo e non so dove cavolo metterlo, per far si che non venga modificato.

Ps io uso Eclipse per scrivere in java (come dice il prof) ma esistono ambienti migliori o diciamo meglio più FACILI?

Ziosilvio
27-11-2007, 10:20
Basta inizializzare "bene" Max e Min all'esterno del ciclo for.
Se non sbaglio, il tipo Integer dovrebbe prevedere un valore massimo e uno minimo, e dei nomi per questi valori, qualcosa tipo Integer.MaxInt per il massimo; controlla la documentazione di Java.

Redvex
27-11-2007, 10:48
Basta inizializzare "bene" Max e Min all'esterno del ciclo for.
Se non sbaglio, il tipo Integer dovrebbe prevedere un valore massimo e uno minimo, e dei nomi per questi valori, qualcosa tipo Integer.MaxInt per il massimo; controlla la documentazione di Java.

E lo so che è quello il problema. C'è l'oggetto math.max e min ma non posso usarlo, nel senso che il professore ci ha detto di no

andbin
27-11-2007, 10:58
Basta fare in modo che il primo valore (quando j == 0) sia messo in ogni caso in Min/Max. In pratica è sufficiente fare una OR nei due if o mettere un altro if apposito.

Se invece la lunghezza fosse 0 (nessun valore inserito), beh, in questo caso particolare Min e Max resteranno ai loro valori iniziali (0).

Redvex
27-11-2007, 13:08
Basta fare in modo che il primo valore (quando j == 0) sia messo in ogni caso in Min/Max. In pratica è sufficiente fare una OR nei due if o mettere un altro if apposito.

Se invece la lunghezza fosse 0 (nessun valore inserito), beh, in questo caso particolare Min e Max resteranno ai loro valori iniziali (0).

Sei sempre gentilissimo e vorrei riuscire ad arrivare almeno a metà del tuo livello.
Purtroppo il corso è un po "così" e mi sto procurando un manuale java perchè mi piacerebbe approfondire per fatti miei.
Potresti spiegarmi più chiaramente se non disturbo troppo:confused:

andbin
27-11-2007, 13:13
Potresti spiegarmi più chiaramente se non disturbo troppo:confused:Devi fare in modo che se j == 0 (primo numero), allora il numero venga assegnato in ogni caso a Min e Max.
Puoi mettere un if a sé stante prima dei due if per il maggiore/minore.

Tra l'altro, l'array 'Vettore' non servirebbe nemmeno (a meno che ti serva poi per altro).

Redvex
27-11-2007, 13:18
Devi fare in modo che se j == 0 (primo numero), allora il numero venga assegnato in ogni caso a Min e Max.
Puoi mettere un if a sé stante prima dei due if per il maggiore/minore.

Tra l'altro, l'array 'Vettore' non servirebbe nemmeno (a meno che ti serva poi per altro).

L'esercizio era sui vettori quindi bisognava usarli.
dovrei farei quindi if (Vettore[j] <min !! Vettore[i] = 0)

andbin
27-11-2007, 13:25
L'esercizio era sui vettori quindi bisognava usarli.Ah, ok.

dovrei farei quindi if (Vettore[j] <min !! Vettore[i] = 0)No. Metti un if prima dei due che hai già fatto: se è il primo numero (j == 0) allora assegni il numero a Mix e Max.