# Max und Min



## Informatikanfänger12 (29. Dez 2017)

Hallo,
Ihr Programm erhält per Kommandozeilenparameter die Anzahl der einzulesenden Zahlen und soll entsprechend viele Zahlen einlesen und anschließend das Minimum sowie Maximum der eingegebenen Zahlen zeilenweise ausgeben.

Also ich habe es so umgesetzt:


```
import java.io.*;

public class Main {
    public static void main(String args[]) throws IOException {
        int max;
        int min;
      
      
        BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));
      
           int zahl = Integer.parseInt(args[0]);
      
      
        int feld [] = new int[zahl];
      
        for (int i=0; i<zahl; i++){
            feld[i]=Integer.parseInt(ein.readLine());
          
          
        }
      
      for (int i=0; i<zahl-1; i++){
           for (int j=1; j<zahl; j++){
             
               if(feld[j]<feld[i]){
                 
                   int speicher= feld[j];
                   feld[j]=feld[i];
                   feld[i]=speicher;
                 
                 
               }
          
            
              
        }
      
        }
      
max=feld[zahl-1];
            min=feld[0];
          
            System.out.println(max);
            System.out.println(min);
    }
}
```

Sieht jmd meinen Fehler:
Ich wollte das Array nach Größe sortieren und dann den 0. und n-1. Eintrag ausgeben.


----------



## JStein52 (29. Dez 2017)

Wenn du wirklich nur das Max. und Min. brauchst dann kannst du doch das einach in der Schleife in der du auch die Zahlen einliest bewerkstelligen und brauchst keine zusätzlichen Schleifen oder Sortierung


----------



## Javinner (29. Dez 2017)

Informatikanfänger12 hat gesagt.:
			
		

> for (int i=0; i<zahl-1; i++)


Das sieht nicht schön aus. Besser wäre es doch: `i < feld.length`
In der Schleife prüfst du dann jedoch nur eine Bedingung, das geht besser 
Schau dir das hier an:
https://javabeginners.de/Schleifen_und_Verzweigungen/Ternaerer_Operator.php

```
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
int[] array = {1, 0, -34, 2, 6, 34, 232, 4, -1, 423, 65};
for (int i = 0; i < array.length; i++) {
      //Dein Code
}
System.out.printf("Maximaler Wert: %d, minimaler Wert: %d%n", max, min);
/** Konsolenausgabe */
Maximaler Wert: 423, minimaler Wert: -34
```


----------



## JStein52 (29. Dez 2017)

```
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (int i=0; i<zahl; i++){
            feld[i]=Integer.readLine());
            if (feld[i] < min) {
               min = feld[i];
            }         
            if (feld[i] > max) {
               max = feld[i];
            }        
}
System.out.println(max);
System.out.println(min);
```


----------



## Informatikanfänger12 (29. Dez 2017)

Danke euch, aber kriege ich es auch ohne 
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;

hin, also mit meiner Sortiermethode. Was ist denn daran falsch?


----------



## Javinner (29. Dez 2017)

Informatikanfänger12 hat gesagt.:
			
		

> Was ist denn daran falsch?


Nichts. Da Java jedoch zum jeweiligen primitiven Typ ein MAX und MIN anbietet, kommt es doch für so ein Unterfangen wie gerufen: FELSENFEST! eben


----------



## Informatikanfänger12 (29. Dez 2017)

Gut danke dir


----------



## JavaUndC-Prog (31. Dez 2017)

Alternativ für eine Arrayliste:


```
static ArrayList<Double> values = new ArrayList<Double>();

    static double min() {
        double min, temp;
        min = values.get(0);
        for(int i = 0; i < values.size(); i++) {
            temp  = values.get(i);
            if(min > temp) {
                min = values.get(i);
            }
        }
        return min;
    }
  
    static double max() {
        double max, temp;
        max = values.get(0);
        for(int i = 0; i < values.size(); i++) {
            temp  = values.get(i);
            if(max < temp) {
                max = values.get(i);
            }
        }
        return max;
    }
```


----------

