Problem mit Static Method

mitti2000

Mitglied
Hallo zusammen

Dies ist mein erstes Mal hier im Forum und ich hoffe, hier eine Lösung für mein Problem zu finden.

Ich habe mich vor kurzen dazu entschieden, Java zu lernen. Ich habe schon etwas Erfahrung mit PHP und Javascript. Ich habe die Webseite Javala - Java Learning Environment gefunden welche mir bis jetzt einen guten Einstieg bot.

Leider hänge ich an einer Aufgabe welche, trotz meiner Meinung korrekten Codes, nicht funktionieren will.

Es handelt sich dabei um die Aufgabe unter Classes-->Static method.

Folgende Aufgabenstellung:
Implement the static method isLicenseNumber(String s) that returns true if the given string is a legal (Finnish) license plate number, otherwise false. To verify legality, it's enough to check that:

- the string's length is 7 AND
- a dash '-' is found at index 3 (123-ABC is considered legal)

Mein Lösungsansatz dazu:
Java:
package com.javala.exercise;
public class StaticMethodExercise {
public static boolean isLicenseNumber(String s)
{
int result = 0;
boolean legal = false;
if (s.length() == 7)
  {
     if (s.charAt(3) == '-')
       {
          result++;
       }
  }
if (result>0)
  {
    legal = true;
  }
return legal;
}

Dieser Lösungsansatz gibt mir die Fehlermeldung:
java.lang.NullPointerException
at com.javala.exercise.StaticMethodExercise.isLicenseNumber(StaticMethodExercise.java:61)
at com.javala.exercise.StaticMethodExercise.runExercise(StaticMethodExercise.java:46)
at com.javala.exercise.ExerciseMain.main(ExerciseMain.java:183)

Kann mir irgendwer helfen?

Vielen Dank
mitti2000
 
Wenn du schon Fehlermeldung mit Zeilen hinschreibt, dann solltest du auch die dazugehörende Zeilen angeben 😉
Darüber hinaus lässt sich das so nicht pauschal nicht sagen, du musst mehr Code geben, vor allem wie du die Methode aufrufst.
 
Das einzige, was an dieser Methode diese Fehlermeldung verursachen kann, ist ein Aufruf mit
isLicenseNumber(null);

Um das abzufangen
Java:
public static boolean isLicenseNumber(String s)
{
    if (s==null) return false;
....
 
Funktioniert bei mir, der Fehler muss an einer anderen Stelle im Code sein, darauf deutet auch die Fehlermeldung hin.
 
Zuletzt bearbeitet:
@XHelp
Danke für deine Antwort. Den Code kann man auf der Seite gleich ausführen. Das ist die Fehlermeldung welche ich bekommen habe. Leider ohne Zeilennummer o.Ä

@Marco13
Vielen Dank. Deine Lösung hat funktioniert. Könntest du mir eventuell mit einfachen Worten erklären warum? Warum der String teilweise null ist? Hat das was mit dem Programm zu tun welches diese Methode aufruft? Ist dein Code etwas, was man generell benützt?

Wie erwähnt bin ich ein totaler Anfänger und würde gerne verstehen wie und warum ich Probleme gelöst habe 😀

Vielen Dank nochmal
mitti2000
 
@Marco13
Vielen Dank. Deine Lösung hat funktioniert. Könntest du mir eventuell mit einfachen Worten erklären warum? Warum der String teilweise null ist? Hat das was mit dem Programm zu tun welches diese Methode aufruft? Ist dein Code etwas, was man generell benützt?

Ja natürlich. Wenn du etwa sowas machst:

Java:
String x;
String y = "333-333"
System.out.println(isLicenseNumber(x));
System.out.println(isLicenseNumber(y));

Wirst du sehen, dass in der 3. Zeile der Fehler auftritt, da x ja nicht initialisiert wird, y hingegen schon. Und solche Fehler sollten deshalb eigentlich nicht auftreten, da du ja nichts leeres prüfen willst. Da ist ja von vornherein klar, dass es nicht zutrifft. Davon ausgehend, dass der Benutzer etwas falsches eingibt, müsste man diesem das halt mitteilen.
 
Vielen Dank

In diesem Fall sendet das Programm, welches die Methode aufruft Null Strings. Ist wahrscheinlich nicht so gedacht aber habe trotzdem was gelernt.

Grüsse mitti

/closed
 
Nein, falsch. pro2, in diesem Fall kompiliert das Programm gar nicht. Aber mit [c]String x = null;[/c] würdest du dieses Ergebnis erzielen.

Edit: hab deinen Kommentar unten nicht gelesen. Nichtsdesto trotz gibt es - wie du auch sagt - einen Compilerfehler und kann damit das Problem des TO gar nicht wiederspiegeln. Mit [c]= null[/c] aber schon 😉
 

Zurück
Oben