Sensei: String überprüfen

Hey!

Kann mir jemand sagen, wie ich einen String überprüfen kann, ob er nur aus 0 und 1 besteht?
Bitte gleich den ganzen code, wenn ihn jemand weiß!

z.B. ich lese string ein myString = readWord();
und dann will ich überprüfen, ob in myString nur 0 und 1 drin sind.

Thx, greez aus Wien,

Sensei

  1. Hallo!

    Kann mir jemand sagen, wie ich einen String überprüfen kann, ob er nur aus 0 und 1 besteht?

    Was hast du an der for-Schleife nicht verstanden?
    Was hast du an der Methode String.length() nicht verstanden?
    Was hast du an der Methode String.chatAt() nicht verstanden?
    Was hast du am Gleichheitsoperator (==) nicht verstanden?

    Sorry, aber diese Aufgabe ist so leicht (3 triviale Zeilen), daß mich doch
    sehr der Verdacht beschleicht, daß du dir nicht mal den Ansatz eines
    Gedankens gemacht hast.
    (Ja, auch für einen Programmieranfänger ist die Aufgabe leicht.)

    Solltest du dir zwischenzeitlich Gedanken gemacht haben, aber trotzdem nicht
    weiterkommen, dann zeige bitte deinen erarbeiteten Lösungsansatz auf, so daß
    wir dich bei der weiteren Lösungsfindung unterstützen können.

    Gruß
    Tobias

  2. Hey!

    Kann mir jemand sagen, wie ich einen String überprüfen kann, ob er nur aus 0 und 1 besteht?
    Bitte gleich den ganzen code, wenn ihn jemand weiß!

    Das krieghst du in den Seltensten fällen!

    private static boolean isOneOfTheseChars(char certainCharacter, char[] charArray)
    {
       for (int i = 0; i < charArray.length; i++)
          if (certainCharacter == charArray[i]) return true;
       return false;
    }

    Als erstes diese Methode, die überprüft, ob ein Zeichen ein Teil eines Arrays ist.

    priavate static boolean consistsOfTheseChars(String anyString, char[] charsToDelete)
    {
       for (int i = 0; i < anyString.length(); i++)
          if (!isOneOfTheseChars(anyString.charAt(i), charsToDelete)) return false;
       return true;
    }

    und nun kannst du überprüfen:

    boolean error = false;
    myString = readWord();
    char[] chars = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};

    error = consistsOfTheseChars(myString, chars);

    Aber merke: Hier bekommst du meistens erklärt, wie du vorzugehen hast. Entweder der Code ist zu kompliziert, um das so auf die Schnelle zu machen, oder - wie in diesem Fall - so einfach, dass es jeder Java-Anfänger machen kann.

    MfG Dmitri

    1. Hi,

      habe deine Frage falsch gelesen. Meine Lösung ist natürlich nur dann sinnvoll, wenn der String aus vielen Zeichen bestehen soll. Wenn es nur zwei sind, dann kannst du entweder char[] = {'0', '1'} nehmen, oder in der if-Anfweisung

      if (myString.charAt(i) != 0 || myString.charAt(i) != 1) return true;

      MfG Dmitri

    2. Hallo!

      Kann mir jemand sagen, wie ich einen String überprüfen kann, ob er nur aus 0 und 1 besteht?
      Bitte gleich den ganzen code, wenn ihn jemand weiß!

      Das krieghst du in den Seltensten fällen!

      Toll! Und wieso gibst du ihm dann eine fertige Lösung?
      Hier steht "Energie des Verstehens" drüber. Nicht "Energie des Delegierens".

      Gruß
      Tobias

      1. Hi,

        Toll! Und wieso gibst du ihm dann eine fertige Lösung?
        Hier steht "Energie des Verstehens" drüber. Nicht "Energie des Delegierens".

        Schon klar, aber er hat mir so leid getan ...
        Er ist ein Anfänger. Vielleicht kennt er charAt() nicht? Vielleicht weiss er nicht so richtig mit Strings umzugehen? Ich bin mir sicher, er hat sich Gedanken gemacht. Nur wenn man das oben erwähnte nicht kann, ist es schwierig. Jetzt hat er eine fertige Lösung. Diese schaut er sich ganz genau an und lernt daraus.

        Du hast sicherlich auch mal deine Probleme, beispielsweise mit der return-Anweisung gehabt.

        MfG Dmitri

        1. Hallo Dmitri!

          1.: Danke für deine Hinweise zu den beiden JAVA-Themen, die ich in diesem Forum angesprochen habe - du hast mir sehr geholfen! Danke auch, dass du mich gegenüber Tobias verteidigt hast.
          Am Anfang ist es nie leicht, etwas zu verstehen, und sich nach stundenlanger(!) Arbeit (das Problem war noch ein bisschen weitläufiger, weil das alles in ein Array verpackt werden sollte) sich auch noch Beschimpfungen anhören zu müssen, war wirklich sehr unschön.

          2.: Frage:
          Mit dem Befehl != 0 geht's nicht - ich muss != 48 schreiben (also ASCII Code o.ä.). Aber warum ist das so?

          Hier der Code (wie gesagt, es funktioniert, 0 bzw. 1 wird angesprochen, aber warum mit 48 bzw. 49???)?

          for(i = 0; i < wort1.length (); i++)
               {
                  if((int)wortArray[j][i] != 48 && (int)wortArray[j][i] != 49)
                 {
                  spezError = true;
                  break;
                 }
               }

          Bitte noch einmal um Erklärung,
          thx vielmals & Grüße aus Wien, Tobias

          1. Hallo,

            2.: Frage:
            Mit dem Befehl != 0 geht's nicht - ich muss != 48 schreiben (also ASCII Code o.ä.). Aber warum ist das so?

            Ja, 48 ist der ASCII- bzw. Uni-Code für '0'. 49 für '1'.
            Du mußt die 0 und die 1 in einfache Anführungszeichen setzen, so wie ich das
            gerade oben gemacht habe. Damit weiß Java, daß du nicht den Wert 0 bzw. 1
            meinst, sondern das Zeichen '0' bzw. '1', also eben das 48. bzw. 49. Zeichen
            im Unicode.

            Du solltest dir vielleicht wirklich erstmal die Grundlagen der Sprache
            Java aneignen. Sehr zu empfehlen sind z.B. die ersten paar Seiten von
            Guido Krügers Java-Buch (zum kostenlosen Download unter http://www.java-buch.de).

            Grüße
            auch Tobias

            1. Hallo,

              2.: Frage:
              Mit dem Befehl != 0 geht's nicht - ich muss != 48 schreiben (also ASCII Code o.ä.). Aber warum ist das so?

              Ja, 48 ist der ASCII- bzw. Uni-Code für '0'. 49 für '1'.
              Du mußt die 0 und die 1 in einfache Anführungszeichen setzen, so wie ich das
              gerade oben gemacht habe. Damit weiß Java, daß du nicht den Wert 0 bzw. 1
              meinst, sondern das Zeichen '0' bzw. '1', also eben das 48. bzw. 49. Zeichen
              im Unicode.

              Thx, vielmals!

              Du solltest dir vielleicht wirklich erstmal die Grundlagen der Sprache
              Java aneignen. Sehr zu empfehlen sind z.B. die ersten paar Seiten von
              Guido Krügers Java-Buch (zum kostenlosen Download unter http://www.java-buch.de).

              Würd ich gerne & ich bin acuh schon fleißig dabei (allerdings mit Horton: Beginning Java 2). Das Problem ist nur, dass ich für eine Übung auf der Uni dieses Programm schreiben muss, nur 11 Tage dafür Zeit habe und auch sonst noch einiges andere um die Ohren.

              Ich bin aber immer bestrebt besser zu werden ;-)...

              Grüße
              auch Tobias

              Danke für deinen Hinweis, (auch) Tobias ;-)