Prbleme mit JAVA

      Prbleme mit JAVA

      Achtung Anfängerproblem:

      Aufgabenstellung: Java Applikation welche Länge und Anzahl der in der Komandozeile eigegebenen Argumente ausgibt.
      Bsp.: Eingabe: Das ist ein Test
      Ausgabe: 4 (als Anzahl) 3 3 3 4 (als Länge der Wörter)

      Ich kann zwar ganz einfach die Anzahl ausgeben aber ich kappier net wie ich in dem Array/String auf die einzelnen Komponenten zugreifen kann. Sprich so weit bin ich bisher:

      public class a02{
      public static void main (String[] args){

      for (int i=0; i<args.length; i++){
      System.out.println(args);
      }
      System.out.println(args.length);
      }
      }

      Ich wollts ja mit "parseInt" versuchen und die einzelnen Daten auf Variablen speichern zusammen mit ner Schleife, aber das ginge nur mit Zahlen...

      mir verzweifelt!!!!!!
      "Craig, are you saying Oprah lied to us? Yessss....

      I've got to keep moving now; Oprahs' people have scopes."

      Craig Ferguson
      dir geholfen wird. weisst doch wen du fragen kannst ;).

      Ich hab die passenden Ausdrücke jetzt nicht im Hirn aber du kannst mit ner Integer-Schleife arbeiten. Lass ihn ausm Array den String auslesen und geh schritt für schritt vorwärts im Wort (Schleife), bis die entsprechende Stelle ne Leerstelle ist (Abbruchbedingung). Die Zählvariable plus 1 gibt dann dein Ausgabeergebnis. Schreib das ganze dann als Funktion und du hast keine Sorgen mehr :smile:.

      Das sind ja alles ganz einfache Befehle also denk ich nicht dass ich da jetzt noch alles zu raussuchen muss, oder?
      “Now, I am become Death, the destroyer of worlds."
      Oppenheimer, 16.7.1945 - 5:29:45
      Wenn Java nix fertiges bietet musst eben den String "manuell" zerlegen. Ich kenn die Möglichkeiten in Java jez net, ich kann nur sagen wie ichs in Delphi machen würde.. Und da gibts auch noch mehrere Ansätze.
      Zum einen könnte am über die Leerzeichen das Wortende erkennen und jeweils das Wort rauskopieren, dazu bräucht man aber ne Funktion die einem die Position eine bestimmten Zeichens in einem String ermittelt. Gibts sowas fertig?
      Der zweite Weg wäre mit einer ähnlichen Funktion zu arbeiten, die die Position ermittelt, indem sie den String ab einem vorgegebenen Index durchsucht. Dann könne man das auch einfach mit 2 Integer-Variablen und ner einfachen Subtraktion lösen.
      Variante 2 wäre natürlich Platzsparender, da man beim ersten auch ein dynamisches Array(String) verwenden sollte.
      MfG Matze

      "Wir trinken Bier nur an Tagen die mit 'g' enden. Und Mittwochs"
      Original von Phonekillaz
      Wenn Java nix fertiges bietet musst eben den String "manuell" zerlegen. Ich kenn die Möglichkeiten in Java jez net, ich kann nur sagen wie ichs in Delphi machen würde.. Und da gibts auch noch mehrere Ansätze.
      Zum einen könnte am über die Leerzeichen das Wortende erkennen und jeweils das Wort rauskopieren, dazu bräucht man aber ne Funktion die einem die Position eine bestimmten Zeichens in einem String ermittelt. Gibts sowas fertig?
      Der zweite Weg wäre mit einer ähnlichen Funktion zu arbeiten, die die Position ermittelt, indem sie den String ab einem vorgegebenen Index durchsucht. Dann könne man das auch einfach mit 2 Integer-Variablen und ner einfachen Subtraktion lösen.
      Variante 2 wäre natürlich Platzsparender, da man beim ersten auch ein dynamisches Array(String) verwenden sollte.


      Ad 1) Array ist vorhanden.
      Ad 2) Unter Delphi gibts dazu keine vorgefertigte Funktion, das muss mit ner einfachen schleife als eigene Funktion geschrieben werden. Unter Java eben es gleiche. Es gibt zwar ne Funktion die das machen sollte, aber die tut eben jenes nicht. Die Antwort liegt hier beim auslesen des strings und der Erzeugung eines neuen mit einem einzigen Buchstaben. Sieht folgendermaßen aus: string.substring(i, i)
      Hierbei wird i als Zählvariable verwendet und als Abbruchbedingung dient der leere Substring sobald man ans Leerzeichen kommt. Nur weiss ich nicht ob die Substring-Methode nicht ungültig wird wenn der Original-String fertig ist. Muss er einfach mal testen.

      Die zweite Methode von dir funktioniert unter anderem nicht. Es sind auch Strings mit einem einzigen Zeichen zulässig. Z.B. ne Zahl. Nach deiner Methode käme zwar ne länge raus, aber nach der Subtraktion (die sonst super funktionieren würde) kommt Null raus. Das hiesse dann man müsste noch einen Abgleich der beiden Variablen machen, womit du dann bei der selben Zeilenzahl wie bei Methode 1 bist.

      @Patrick: Funktioniert das was ich dir gestern per ICQ versucht hab zu erklären denn nicht?
      “Now, I am become Death, the destroyer of worlds."
      Oppenheimer, 16.7.1945 - 5:29:45

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „GERwildcat“ ()

      Original von GERwildcat
      Original von Phonekillaz
      Wenn Java nix fertiges bietet musst eben den String "manuell" zerlegen. Ich kenn die Möglichkeiten in Java jez net, ich kann nur sagen wie ichs in Delphi machen würde.. Und da gibts auch noch mehrere Ansätze.
      Zum einen könnte am über die Leerzeichen das Wortende erkennen und jeweils das Wort rauskopieren, dazu bräucht man aber ne Funktion die einem die Position eine bestimmten Zeichens in einem String ermittelt. Gibts sowas fertig?
      Der zweite Weg wäre mit einer ähnlichen Funktion zu arbeiten, die die Position ermittelt, indem sie den String ab einem vorgegebenen Index durchsucht. Dann könne man das auch einfach mit 2 Integer-Variablen und ner einfachen Subtraktion lösen.
      Variante 2 wäre natürlich Platzsparender, da man beim ersten auch ein dynamisches Array(String) verwenden sollte.


      Ad 1) Array ist vorhanden.
      Ad 2) Unter Delphi gibts dazu keine vorgefertigte Funktion, das muss mit ner einfachen schleife als eigene Funktion geschrieben werden. Unter Java eben es gleiche. Es gibt zwar ne Funktion die das machen sollte, aber die tut eben jenes nicht. Die Antwort liegt hier beim auslesen des strings und der Erzeugung eines neuen mit einem einzigen Buchstaben. Sieht folgendermaßen aus: string.substring(i, i)
      Hierbei wird i als Zählvariable verwendet und als Abbruchbedingung dient der leere Substring sobald man ans Leerzeichen kommt. Nur weiss ich nicht ob die Substring-Methode nicht ungültig wird wenn der Original-String fertig ist. Muss er einfach mal testen.

      Die zweite Methode von dir funktioniert unter anderem nicht. Es sind auch Strings mit einem einzigen Zeichen zulässig. Z.B. ne Zahl. Nach deiner Methode käme zwar ne länge raus, aber nach der Subtraktion (die sonst super funktionieren würde) kommt Null raus. Das hiesse dann man müsste noch einen Abgleich der beiden Variablen machen, womit du dann bei der selben Zeilenzahl wie bei Methode 1 bist.

      @Patrick: Funktioniert das was ich dir gestern per ICQ versucht hab zu erklären denn nicht?


      Nicht ganz richtig. Delphi bietet eine Funktion die die Position eines Stings in einem anderen String zurückgibt. In dem Fall liefert "pos(' ',Zeichenfolge)" das erste vorkommen des Leerzeichens.

      @Patrick. Muss das zwingend in Java sein was du machen sollst ?
      Gruß
      Micha

      der-wadriller.de
      ----------------
      Es ging mir auch nich um die Zeilenanzahl, ich hatte da eher den Speicher im Sinn, nen Array is da um einiges speicheraufwändiger, als den String einmal zu haben und dann nur noch 2 Integer für die Positionen.

      Das was ich geschrieben hab, waren bewusst keine kompletten Funktionen, es sollte nur als Denkansatz dienen, wie man an die Sache rangehen kann, das man Sonderfälle extra behandeln muss sollte klar sein :wink: N bissl Arbeit muss man dem Praios ja auch noch über lassen :smile:
      MfG Matze

      "Wir trinken Bier nur an Tagen die mit 'g' enden. Und Mittwochs"

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Phonekillaz“ ()

      Original von wadriller
      Original von GERwildcat
      Original von Phonekillaz
      Wenn Java nix fertiges bietet musst eben den String "manuell" zerlegen. Ich kenn die Möglichkeiten in Java jez net, ich kann nur sagen wie ichs in Delphi machen würde.. Und da gibts auch noch mehrere Ansätze.
      Zum einen könnte am über die Leerzeichen das Wortende erkennen und jeweils das Wort rauskopieren, dazu bräucht man aber ne Funktion die einem die Position eine bestimmten Zeichens in einem String ermittelt. Gibts sowas fertig?
      Der zweite Weg wäre mit einer ähnlichen Funktion zu arbeiten, die die Position ermittelt, indem sie den String ab einem vorgegebenen Index durchsucht. Dann könne man das auch einfach mit 2 Integer-Variablen und ner einfachen Subtraktion lösen.
      Variante 2 wäre natürlich Platzsparender, da man beim ersten auch ein dynamisches Array(String) verwenden sollte.


      Ad 1) Array ist vorhanden.
      Ad 2) Unter Delphi gibts dazu keine vorgefertigte Funktion, das muss mit ner einfachen schleife als eigene Funktion geschrieben werden. Unter Java eben es gleiche. Es gibt zwar ne Funktion die das machen sollte, aber die tut eben jenes nicht. Die Antwort liegt hier beim auslesen des strings und der Erzeugung eines neuen mit einem einzigen Buchstaben. Sieht folgendermaßen aus: string.substring(i, i)
      Hierbei wird i als Zählvariable verwendet und als Abbruchbedingung dient der leere Substring sobald man ans Leerzeichen kommt. Nur weiss ich nicht ob die Substring-Methode nicht ungültig wird wenn der Original-String fertig ist. Muss er einfach mal testen.

      Die zweite Methode von dir funktioniert unter anderem nicht. Es sind auch Strings mit einem einzigen Zeichen zulässig. Z.B. ne Zahl. Nach deiner Methode käme zwar ne länge raus, aber nach der Subtraktion (die sonst super funktionieren würde) kommt Null raus. Das hiesse dann man müsste noch einen Abgleich der beiden Variablen machen, womit du dann bei der selben Zeilenzahl wie bei Methode 1 bist.

      @Patrick: Funktioniert das was ich dir gestern per ICQ versucht hab zu erklären denn nicht?


      Nicht ganz richtig. Delphi bietet eine Funktion die die Position eines Stings in einem anderen String zurückgibt. In dem Fall liefert "pos(' ',Zeichenfolge)" das erste vorkommen des Leerzeichens.

      Richtig, und mit "posex" hast du auch noch die Möglichkeit das ab einen bestimmten Index zu machen: Bsp posex('a',text,5)
      MfG Matze

      "Wir trinken Bier nur an Tagen die mit 'g' enden. Und Mittwochs"
      Original von Phonekillaz
      Original von wadriller

      Nicht ganz richtig. Delphi bietet eine Funktion die die Position eines Stings in einem anderen String zurückgibt. In dem Fall liefert "pos(' ',Zeichenfolge)" das erste vorkommen des Leerzeichens.

      Richtig, und mit "posex" hast du auch noch die Möglichkeit das ab einen bestimmten Index zu machen: Bsp posex('a',text,5)


      OK geb mich geschlagen. Aber leider gibt es die Methode unter Java glaub ich nicht. Zumindest hab ich noch nie was in der Art gelesen.

      btw: Das dynamische Array wird ja sowieso benötigt, da ja niemand vorher weiss wie viele Wörter eingegeben werden ;).
      “Now, I am become Death, the destroyer of worlds."
      Oppenheimer, 16.7.1945 - 5:29:45
      Ok erledigt...ging doch so wie ichs vermutet hab...hab den befehl nur falsch geschrieben...hier das vollständige Programm:

      class kommand {
      public static void main(String[] s){
      System.out.println(s.length);
      for (int i=0;i<s.length;i++){
      System.out.println(s .length());
      }
      }
      }
      "Craig, are you saying Oprah lied to us? Yessss....

      I've got to keep moving now; Oprahs' people have scopes."

      Craig Ferguson
      Original von GERwildcat
      btw: Das dynamische Array wird ja sowieso benötigt, da ja niemand vorher weiss wie viele Wörter eingegeben werden ;).

      Was willst du mit nem Array, wenn du den String nich zerpflückst? Man kann den String ja auch "am Stück" betrachten, wie ich oben schrieb :wink:
      MfG Matze

      "Wir trinken Bier nur an Tagen die mit 'g' enden. Und Mittwochs"
      bin halt n Fan von dynamischen Arrays... Die brauchen immer nur so viel rechenkapazität wie wirklich benötigt wird, man kann sie sehr gut auslesen und mit ihnen arbeiten.

      @Patrick: dass das mit length funzt hätt ich nich gedacht. In der Dokumentation von Java 1.5 hab ich die Methode nicht gefunden....
      “Now, I am become Death, the destroyer of worlds."
      Oppenheimer, 16.7.1945 - 5:29:45

    Weitere Partner von Jacatu:

    Schrubbkarre  Cheats  Team Vogt  Oldieboard  Automarkt  Auto  Versicherungvergleich online  Auto Magazin  TitanXXL