Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich bekomme als Kommandozeilenparameter die Anzahl der einzulesenden Zahlen und will dann von diesen Min und Max bestimmen.
Das habe ich so gelöst:
Java:
import java.util.Scanner;
public class Main {
public static void main(String [] args){
int anzahl=Integer.parseInt(args[0]);
Scanner s=new Scanner(System.in);
int feld []=new int[anzahl];
for(int i=0; i<feld.length; i++){
feld[i]=s.nextInt();
}
for(int i=0; i<feld.length-1; i++){
for(int j=i+1; i<feld.length; j++){
if(feld[j]<feld[i]){
int temp=feld[i];
feld[i]=feld[j];
feld[j]=temp;
}
}
}
System.out.println(feld[anzahl-1]);
System.out.println(feld[1]);
}
}
Wenn ich das teste kriege ich in der if-Bedingung eine
ArrayIndexOutOfBoundsException. Woran liegt das?
Die innerer For-Schleife hat eine falsche Bedingung. "j<feld.length" statt "i<feld.length". Deshalb benutze ich für Schleifenvariablen immer i und k, statt i und j. Dann fällt sowas schneller auf
Du sortierst. Das kann man machen, ist aber unnötig (und die Speicher- und Laufzeitkomplexität ist zu hoch, das soll hier aber keine Rolle spielen).
Java:
import java.util.Scanner;
public class Main {
public static void main(String [] args){
int anzahl=Integer.parseInt(args[0]);
if (anzahl > 0) {
Scanner s=new Scanner(System.in);
int wert = s.nextInt();
int min = wert;
int max = wert;
for(int i=1; i<anzahl; i++){
wert = s.nextInt();
min = Math.min(wert, min);
max = Math.max(wert, max);
}
System.out.println(min);
System.out.println(max);
} else {
System.out.println("Von nix kommt nix");
}
}
}
Und weil es Spaß macht alles mit Streams abzubilden:
Java:
public static void main(String [] args) {
try {
int count = Integer.parseInt(args[0]);
if(count > 0) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Stream<String> stream = in.lines().limit(count);
IntSummaryStatistics summary = stream.mapToInt(Integer::parseInt).summaryStatistics();
System.out.printf("Min: %d, Max: %d%n", summary.getMin(), summary.getMax());
} else {
System.out.println("You can't get blood from a stone.");
}
} catch(NumberFormatException e) {
//System.out.println("Not even Harry Potter can turn that into an Integer.");
System.out.println("Only Chuck Norris can turn that into an Integer.");
}
}
Edit: Forgot about Chuck Norris (Schande auf mein Haupt)