tschanne: For-schlafue

was is da falsch?

int arr = 0;
int anzahlzeichen = satz2.length();
int pops = 0;

String satz3;
string satz2;

for(arr = 0; arr < anzahlzeichen; arr++)
{
if (!(satz2[arr] = "!"))
  satz3[arr] = satz2[arr];
}

  1. was is da falsch?

    int arr = 0;
    int anzahlzeichen = satz2.length();

    Wie kannst Du auf die Methode eines noch nicht deklarierten und instanziierten Objekts zugreifen?

  2. Hallo tschanne,

    int arr = 0;
    int anzahlzeichen = satz2.length();

    Was ist satz2? Ist das irgendwo weiter oben deklariert?

    int pops = 0;

    String satz3;
    string satz2;

    Du deklarierst satz2 nochmal, obwohl Du es oben schon verwendest.

    for(arr = 0; arr < anzahlzeichen; arr++)

    Wenn möglich, eine lokale Schleifenvariable verwenden.

    {
    if (!(satz2[arr] = "!"))

    Vergleichen kann man mit == = ist eine Zuweisung.
    Außerdem will man Strings in der Regel mit equals() vergleichen, da man an Referenzgleichheit nicht interessiert ist.

    satz3[arr] = satz2[arr];

    Oben hast Du satz3 und satz2 als Strings deklariert, nicht alls Arrays von Strings.

    }

    Willst Du mit dem Code etwas bestimmtes erreichen (wenn ja, was?) oder stammt der aus einer Übungsaufgabe "Finde die Fehler"? ;-)

    Grüße

    Daniel

    1. Willst Du mit dem Code etwas bestimmtes erreichen (wenn ja, was?) oder stammt der aus einer Übungsaufgabe "Finde die Fehler"? ;-)

      Bei Sun hieße es schlicht: Compilation fails at line 2 :)

    2. die variablen sind alle deklariert etc.
      es hat probleme mit dem satz[arr]

      1. Hallo tschanne,

        die variablen sind alle deklariert etc.
        es hat probleme mit dem satz[arr]

        Ja natürlich hat es die, satz2 und satz3 hast Du ja schließlich als Strings deklariert. Und Strings sind keine Arrays (wie das in manchen Sprachen der Fall ist) deshalb kannst Du da auch nicht so drauf zugreifen, wie Du das versuchst.

        Es spricht übrigens nichts dagegen, mehrere Fragen in einem Thread abzuhandeln.

        Grüße

        Daniel

        1. Hallo tschanne,
          die variablen sind alle deklariert etc.
          es hat probleme mit dem satz[arr]Ja natürlich hat es die, satz2 und satz3 hast Du ja schließlich als Strings deklariert. Und Strings sind keine Arrays (wie das in manchen Sprachen der Fall ist) deshalb kannst Du da auch nicht so drauf zugreifen, wie Du das versuchst.

          Es spricht übrigens nichts dagegen, mehrere Fragen in einem Thread abzuhandeln.

          Grüße
           Daniel

          wie soll ichs dann machen??

          1. Hallo tschanne,

            wie soll ichs dann machen??

            Das hängt entschieden davon ab, was Du machen willst.

            <?t=77397&m=446695>
            Dieser Thread ist doch von dir oder?

            Arrays kopiert man mit java.lang.System.arraycopy();
            Und dabei kann man nichts ignorieren. Jedenfalls nicht sinnvoll.
            Wenn Du Strings verändern willst, musst Du StringBuffer verwenden.

            StringBuffer string = new StringBuffer(".....");

            for(int i = 0; i < string.length(); i++) {
              if(string.charAt(i) == '#') {
                string.deleteCharAt(i);
                continue;
              }
            }

            Du solltest Dir ein paar Dinge zu Herzen nehmen, wenn Du weiter kommen willst:
            * Versuche zu verstehen, was man Dir erklärt.
            * Beantworte Rückfragen, die man Dir stellt.
            * Mache nicht dauernd neue Threads auf.

            Grüße

            Daniel

            1. *g* der andere thread is net von mir, sondern vom kameraden neben mir wo das selbe problem hat ;)
              greez
              tschanne

              danke für die hilfe

              1. Hi tschanne,
                ich weiß, ich komm schon wieder zu spät. Aber solltest du doch deinen Ansatz weiterverfolgen wollen und durch ein Array iterieren, dann kannst du den String einem charArray zuweisen und in der Schleife abarbeiten

                Grüße Noodles

                String satz2= "Noodles!Self!forum";
                char[] charHelper = satz2.toCharArray();
                StringBuffer satz3 = new StringBuffer();
                for(int i = 0; i < charHelper.length ; i++)
                  if (charHelper[i] != '!')
                   satz3.append(charHelper[i]) ;

                System.out.println(satz3.toString());

                1. jaa das isses :) :)
                  vielen Dank
                  *hüpf*
                  greez

                2. Hallo Noodles,

                  String satz2= "Noodles!Self!forum";
                  char[] charHelper = satz2.toCharArray();

                  Das ist keine gute Idee. Man kann ja direkt über den String iterieren.
                  So hat man den String doppelt, und das nur, um per [] zugreifen zu können.

                  Grüße

                  Daniel

                  1. Hi Daniel

                    Das ist keine gute Idee. Man kann ja direkt über den String iterieren.
                    So hat man den String doppelt, und das nur, um per [] zugreifen zu können.

                    ich würde deinen Ansatz auch bevorzugen, da bei meiner Lösung der String redundant im Speicher vorliegt. Aber ich denke, dass der Ansatz, den tschanne gezeigt hat, von einer Iteration über ein Array ausgeht. Ich bin hierbei der Meinung, dass es bei dieser Frage eher um das Verständnis geht. Da sich heute im Forum mehrere Leute mit demselben Problem tummeln, nehme ich an, dass jemand gerade Programmierunterricht hat... Die Feinheiten der Textverarbeitung und das performante Programmieren kommt mit steigender Erfahrung von selbst (oder auch nicht *g*).