Methoden Fehler in Methode - Finde ihn nicht

Master1991

Mitglied
Hi,

hab mich jetzt auch mal registriert hier🙂.
Hab vor 2 Tagen schonmal gepostet unter nem Gastaccount da wurde mir sehr schnell geholfen nun hab ich aber wieder ein Problem

Und zwar geht es um folgendes Programm mit den weiter unten aufgeführten Methoden.

Das Programm soll halt ne Nummer einlesen und mit einer anderen Nummer die ersten 5 Stellen vergleichen.

Also:
112546698 (Nummer1)
11254 (identisch also true)
59878 (nicht identisch also false)

Mein Problem ist aber er prüft nur die ersten 4 Ziffern und die 5te ist vollkommen egal also er erkennt auch:
11259 als richtig an ... an der Abbruchbedingung liegt es nicht und ich finde meinen Fehler einfach nicht🙁

[Java]
public static void main(String args[])
{
char auswahl = 'j';
do
{
p("Bitte Kontonummer eingeben: ");
long ktonr = liesLong();
long[] kto = longZuArray(ktonr);
boolean abfrage = false;
while(!abfrage)
{
p("Bitte Pin eingeben: ");
long[] pin = longZuArray(liesLong());
abfrage = pinTest(kto, pin);
if(abfrage)
break;
else
pln("Die eingegebene Pin ist nicht korrekt!");
}
neuerKunde(ktonr);
pln();
p("Naechster Kunde (j/n)?");
auswahl = liesChar();
pln();
}while(auswahl == 'j' || auswahl == 'J');
}

[/Java]

[Java]

public static long[] longZuArray(long zahl)
{
long[] temp = new long[String.valueOf(zahl).length()];
for(int i = 0; i<temp.length; i++)
{
temp = zahl%10;
zahl /= 10;
}
long[] array = new long[temp.length];
for(int i = 0; i < temp.length; i++)
{

array = temp[temp.length-1-i];
}

return array;
}
public static boolean pinTest(long[] kto, long[] pin)
{
boolean result = false;
if(pin.length != 5)
return false;
else
{
for(int i = 0; i<5; i++)
{
if(kto == pin)
result = true;
else
result = false;
break;
}
return result;
}
}
[/Java]
 
Ich hatte ihm sogar vorgeschlagen mit startsWith zu prüfen. ^^
Versuch einfach mal, die Arrays nach der Konvertierung auszugeben (felderweiße, nicht per toString()).
Dann weißt du, ob es an der Konvertierung liegt.
Und dann gibtst du bei jeden Schleifendurchgang einfach kto, pin und den Wert von result aus, dann siehst du was er in der Schleife macht.

Dann siehst du genau was er macht relativ zu dem, was er machen sollte.
 
Weil ich nicht weiß wie das geht😀

Die String.valueOf Methode hab ich auch schon hier aus dem Forum...letzendlich ist das halt ne Übungsaufgabe aus der Uni und ich glaub wir sollen nur Sachen benutzen die wir schon hatten.

Aber ohne die valueOf Methode konnt ich keine variable array Länge definieren, daher ist das mit drin.

Aber mal ganz abgesehen davon das es sicher 10x leichter geht wenn man das wissen hat, muss meins ja trotzdem funktionieren und ich hab irgendwo nen doofen Fehler gemacht? Siehst du den eventuell?


@Volvagia: Das ist genau das gleiche, alles Dinge die wir noch nicht hatten, ich möchte es wennsgeht erstmal mit dem versuchen zu lösen was ich bereits kann🙂

Also das Array hatte ich mir schonmal ausgegeben das stimmte, wobei mir da gerade einfällt das ich nicht auf Stellenwert überprüft hab...ich mach das nochmal=)
 
Java:
if(kto[i] == pin[i])
    result = true;
  else
    result = false;
    break;
Das führt er aber nicht so aus, wie deine Einrückung. Da fehlt eine Klammer nach dem else.
 
Oh nein, das hat wirklich an den Klammern gelegen😳

Jetzt funktioniert alles, aber jetzt versteh ich leider nicht mehr wieso😀

Das break sorgt doch dafür das die Schleife verlassen wird, wenn ich die Klammern vergessen hab wurde es doch schon beim ersten Schleifendurchlauf aufgerufen, oder?

Wieso war dann eine Pin nicht schon richtig wenn bereits Ziffer 1 stimmt? Es mussten in der Tat 4 von 5 richtig sein.
 
Java:
if(kto[i] == pin[i])
    result = true;
  else
    result = false;
    break;
Das führt er aber nicht so aus, wie deine Einrückung. Da fehlt eine Klammer nach dem else.

Ja das ist korrekt, er brüft nur die erste Stelle und dann bricht er immer ab, so könntest du dir die schleife sparen, probiere es mal so

Java:
   if(kto[i] == pin[i]){
      result = true;
   }else{
       result = false;
       break;
   }

Ich würde bzw mache gennerel klammern nach if und else

alternativ geht auch


Java:
   if(kto[i] == pin[i]){
      result = true;
   }else{
       return false;
   }

[EDIT]Ja das break sorgt dafür das die Schleife unterbrochen wird und zwar bei dir nach dem ersten durchlauf, egal ob true oder false[/EDIT]
 
Okay, dann hab ich das ja richtig verstanden. Gut damit ist das Problem gelöst, das nächste kommt bestimmt😀

Danke vielmals an alle echt top wie schnell hier geholfen wird🙂
 

Neue Themen


Zurück
Oben