Array auf Werte überprüfen mit Konsoleneingabe

VektorN

Grünschnabel
Hi zusammen,

also ich würde gerne ein eindimensionales Array (mit Zahlen von 1-10) erzeugen und dann mittels einfacher Tastatureingabe (Zahlen von 1-10) ein Resultat erzeugen das mir sagt ob ich mit der Eingabe im Array liege oder nicht.
Z.B. gebe ich 19 ein oder -3 kommt jeweils Zahl ist falsch, gebe ich dann 2 ein kommt Zahl richtig und es wird mir angezeigt wie oft ich versucht habe eine Zahl zwischen 1 und 10 einzugeben bzw. auch wie oft ich danebenlag.

Mein Ansatz ist nun (leider laienhaft) wie folgt:

Code:
public class Main {


    public static void main(String[] args) {

        System.out.println("Geben Sie eine Zahl zwischen 1 und 10 ein: ");

        int zahl1 = Konsole.getInputInt("Zahl: ");
        int[] zahl = new int[10];

        if (zahl1 != zahl.length)
         System.out.println("Falsche Eingabe");
        else
         System.out.println(+zahl1);

    }

}

Ich dachte mir ich fang erstmal so an das die Eingabe überprüft wird ob diese im Array liegt.
Leider erhalte ich immer das Resultat falsche Eingabe, stimmt irgendwas nicht mit dem zahl.lenght? stehe mittlerweile voll aufm Schlauch :confused:
Konsole.getInputInt ist eine einfache Eingabe Klasse falls Bedarf besteht poste ich diese auch dazu gerne :)
 
Hallo,

ich bin mir nicht sicher, ob ich richtig verstanden habe, was du möchtest.
Wenn ich es richtig verstanden habe, möchtest du überprüfen, ob die Zahl die du eingibst im Array vorhanden ist.
Dann musst du allerdings durch das Array durchlaufen. Mit zahl.length fragst du einfach die länge deines Arrays ab.

Also mit einer Schleife läufst du jedes Feld deines Arrays ab und schaust, ob die Zahl gleich deiner Eingabe ist.

Gruß

Sascha
 
Anstatt jedes Feld in einer Schleife zu durchlaufen, kannst du auch folgende Method nutzen.
Java:
if (java.util.Arrays.binarySearch(zahl, zahl1) < 0)
         System.out.println("Falsche Eingabe");
else
         System.out.println(+zahl1);
 
Danke für euer Feedback :)

@CPoly
also mit :

Code:
if (java.util.Arrays.binarySearch(zahl, zahl1) < 0)
         System.out.println("Falsche Eingabe");
else
         System.out.println(+zahl1);

erhalte ich immer eine ungültige Ausgabe :(.

@zerix

Da ich noch nicht so vertraut mit diesem Thema bin frag ich mal frei herraus :)
Würde es dann nicht mit:

Code:
if (zahl1 < zahl.length || zahl1 > zahl.length)

auch gehn?

Für mich würde die if-Bedingung so lauten:

wenn (zahl kleiner arraylänge oder zahl größer array länge)

Error.

oder

gib die Zahl aus.

Oder versteh ich das Ding komplett falsch? :)
 
Zuletzt bearbeitet:
Irgendwie versteh ich nicht so recht, wozu du das Array überhaupt brauchst, zumal du es ja nicht mal mit Werten füllst. Warum verwendest du nicht einfach eine Variable upperLimit und überprüfst dann, ob der eingegebene Wert die Bedingung >= 0 && <= upperLimit erfüllt?
 
Code:
if (zahl1 < zahl.length || zahl1 > zahl.length)
auch gehn?
Für mich würde die if-Bedingung so lauten:
wenn (zahl kleiner arraylänge oder zahl größer array länge)
Error.
oder
gib die Zahl aus.

Oder versteh ich das Ding komplett falsch? :)

Moin,

ich glaube, Du vergleichst hier Äpfel mit Birnen (wenn ich Dich richtig verstehe) ;)
Du möchtest doch prüfen, ob die eingegebene Zahl in Deinem Array enthalten ist, oder :confused:

Also musst erstmal - wie schon vorher gesagt - Dein Array mit Zahlen füllen!
Anschließend kannst Du dann mit eine der genannten Methoden testen, ob die eingegebene Zahl ein Element im Array ist!

Mal so auf die Schnelle und ungetestet :
Java:
int iMeineEingabe = 0;

... // Wert einlesen

int[] zahl = new int[10];
for( int i = 0; i < 10; i++ )
{
    zahl[i] = i + 1;  // füllt das erste (= 0-te) Element mit dem Wert 1
}

....

for( int i = 0; i < 10; i++ )
{
    if( zahl[i] == iMeineEingabe )
    {
    // gefunden :-)
    break;
    }
}

Mit "zahl.length" erhälst Du lediglich die Anzahl der Elemente des Arrays!

Gruß
Klaus
 
Wennd er Array auch gefüllt ist geht natürlich dann auch die binarySearch:

Java:
	public static void main(String[] args) {

		System.out.println("Geben Sie eine Zahl zwischen 1 und 10 ein: ");

		int zahl1  = Konsole.getInputInt("Zahl: ");
		int[] zahl = new int[10];
		
		for( int i = 0; i < 10; i++ ){
		    zahl[i] = i + 1;
		}
		
		if(Arrays.binarySearch(zahl, zahl1 ) > 0 ){
			System.out.println(+zahl1);
		} else {
			System.out.println("Falsche Eingabe");
		}
	}
 
Hi danke für euer Feedback,

also mit binarySearch klappt das ganze schonmal sehr gut,
nun versuche ich (bisher erfolglos) die Anzahl der korrekten Eingaben zu speichern und die Summe aller Zahlen die ich eingegeben habe (welche korrekt waren), das ganze sollte dann bei der Eingabe von 0 stoppen und mir ein Ergebniss liefern wie etwa:

Die Anzahl der erfolgreichen Treffer lautet: 2
Die Summer aller korrekten Zahlen lautet: 9

Da mein Material leider durchaus dürftig ist komm ich nicht dahinter wie ich das ganze an eine Variable übergebe,
muss ich hier wiederrum ein array erstellen und für jeden korrekten Treffer einen platz dazurechnen?

z.b.:

Code:
Eingabe zahl1 =1;
System.out.println("korrekt");
int[] korrekt = new int[]; 
korrekt[i] = i + 1;

Eingabe zahl1 =8;
System.out.println("korrekt");
int[] korrekt = new int[]; 
korrekt[i] = i + 1;

Eingabe 0:
System.out.println("Die Anzahl der erfolgreichen Treffer lautet: 2");
System.out.println("Die Summer aller korrekten Zahlen lautet: 9");

etwa so? irgendwie werd ich mit Arrays noch nicht so recht warm :(
 
Du musst einfach nur zwei variablen zum mitzählen haben.
Java:
	public static void main(String[] args) {

		System.out.println("Geben Sie eine Zahl zwischen 1 und 10 ein: ");

		int zahl1  = Konsole.getInputInt("Zahl: ");
		int[] zahl = new int[10];
		
		for( int i = 0; i < 10; i++ ){
		    zahl[i] = i + 1;
		}

                int korrekt=0, falsch=0;
		
		if(Arrays.binarySearch(zahl, zahl1 ) > 0 ){
			korrekt++;
		} else {
			falsch++;
		}
	}
 
Zurück