10 positive Zahlen eingeben

Hallo liebe Community,
ich habe eine Frage bezüglich der Augabe von 10 positiven Zahlen.
Es sollen 10 Zahlen eingelesen werden die postitiv sein sollen, wenn sie 0 oder negativ sind sollen sie einfach ignoriert werden.
Es sollen aber solange Eingaben gemacht werden bis 10 positive Zahlen zu sehen sind. Wenn 10 postive Eingaben gemacht wurden soll der größte Wert (max) ausgegeben werden.
Nun mein Ansatz:


Java:
import java.util.Scanner;


public class Maximum10 {


    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int eingabe = 0;

        int max = 0;

    

        for (int i = 1; i <= 10; i++) {

            eingabe = in.nextInt();

            if (eingabe <= 0) {

                continue;

            }

            if (eingabe > max) {

                max = eingabe;

            }

        }

        System.out.println(max);


    }


}




das Problem ist, dass ich selbst wenn ich negative Zahlen oder Null eingebe diese Zahlen nicht wirklich übersprungen werden, sondern trotzdem als zahlen auf der Konsole ausgegeben werden.
Hat vielleicht jemanden einen Tipp zum Verbessern des Codes?
Danke schon mal im Vorraus!
 
Zuletzt bearbeitet:
Zuvor noch etwas anderes: wenn du continue verwendest, wird i++ ausgeführt. Gibt du also 10 neg. Zahlen ein, ist das Programm schon zuende. Korrigiert das bitte und setze deinen Java-Code formatiert und gut eingerückt hier neu hinein.
 
Hier mal ordentlich eingerückt:
Java:
import java.util.Scanner;

public class Maximum10 {

public static void main(String[] args) {
   Scanner in = new Scanner(System.in);
   int eingabe = 0;
   int max = 0;

   for (int i = 1; i <= 10; i++) {
      eingabe = in.nextInt();
      
      if (eingabe <= 0) {
         continue;
      }
     
      if (eingabe > max) {
         max = eingabe;
      }
   }
   
   System.out.println(max);
}

}
Wie sollen denn zehn Zahlen ausgegeben werden, wenn es nur einen Ausgabebefehl gibt, der nach der Schleife steht?

Was für eine Funktion hat "max"? Die Aufgabe erwähnt davon nichts.
 
Hier mal ordentlich eingerückt:
Java:
import java.util.Scanner;

public class Maximum10 {

public static void main(String[] args) {
   Scanner in = new Scanner(System.in);
   int eingabe = 0;
   int max = 0;

   for (int i = 1; i <= 10; i++) {
      eingabe = in.nextInt();
   
      if (eingabe <= 0) {
         continue;
      }
  
      if (eingabe > max) {
         max = eingabe;
      }
   }

   System.out.println(max);
}

}
Wie sollen denn zehn Zahlen ausgegeben werden, wenn es nur einen Ausgabebefehl gibt, der nach der Schleife steht?

Was für eine Funktion hat "max"? Die Aufgabe erwähnt davon nichts.
tut mir leid ich habe eine Teil vergessen. Also es sollen 10 positive Eingaben gemacht werden und am Ende wenn diese eingaben gemacht wurden das Maximum, also die größte eingegebene Zahl ausgegeben werden.
import java.util.Scanner;

Java:
public class Maximum10 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int eingabe = 0;
        int max = 0;
      
        for (int i = 1; i <= 10; i++) {
            eingabe = in.nextInt();
            if (eingabe <= 0) {
                continue;
            }
            if (eingabe > max) {
                max = eingabe;
            }
        }
        System.out.println(max);

    }

}
 
Zuletzt bearbeitet von einem Moderator:
Füge mal in deinen Code
Java:
System.out.println("Gib die " + i + ". Zahl ein:"); // Diese Zeile
eingabe = in.nextInt();
ein. Dann kannst du leicht nachverfolgen, wie sich "i" verhält.
 
Es sollen 10 Zahlen eingelesen werden die postitiv sein sollen
Vielen Dank für die Hilfe habe das Problem nun gelöst :)
Nicht so ganz.
Java:
        for (int i = 1; i <= 10; i++) {
            eingabe = in.nextInt();
            if (eingabe <= 0) {
                continue;
            }
            if (eingabe > max) {
                max = eingabe;
            }
        }
Wenn im obigen Code eine negative Zahl oder 0 eingegeben wird, werden nicht wirklich 10 positive Zahlen eingelesen.
Das solltest Du noch korrigieren.
 
Vielen Dank für die Hilfe habe das Problem nun gelöst :)
...was der bereits gepostete Code aber nicht gerade reflektiert. Mithilfe von https://stackoverflow.com/questions/35737170/try-catch-multiple-input-statements kann man eine -wohl gerade recht populäre- Scannereingabe härten. Das Maximum/Minimum eines Arrays lässt dich via https://www.geeksforgeeks.org/find-max-min-value-array-primitives-using-java/ ermitteln.
Modifiziertes Beispiel von SO:
Java:
import java.util.Scanner;
import java.util.InputMismatchException;

public class Maximum10 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] inputs = new int[10];//create array for the # of inputs
        for ( int i = 0; i < inputs.length; ) {
            try {
                System.out.println( "Enter Num " + ( i + 1 ) );

                inputs[i] = input.nextInt();
                if (inputs[i]>0) {
                    i++;//only increment if the line above doesnt raise error
                }
                else {
                        System.out.println("Only positive integers allowed...");
                }
            } catch ( InputMismatchException e) {
                input.nextLine();
                System.out.println( "Only integers allowed, try again" );
            }
        }
        input.close();
        for ( int i = 0; i < inputs.length; i++ ) {
            System.out.println( String.format( "Input %s was %s", i + 1, inputs[i] ) );
        }
    }
}
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben