iteration durch Array stoppt nicht bei Laufbedingung?

Status
Nicht offen für weitere Antworten.
G

Grischa

Gast
Hallo,

habe schon mit dem debugger replaceTextStart untersucht, was ich net verstehe, warum replaceTextStart nach wert = 0 immer noch durch die Schleife geht und dadurch ich das bekomme:
Code:
Zeile: l Position: 2
Zeile: a Position: 1
Zeile: H Position: 0
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1

Zeile: H ist das 1. Zeichen der Zeile sprich position 0 und weiter gehts im Array ja nicht daher wird auch die exception geworfen , wenn chartAt(< 0 wird), doch warum?

Laufzeitbedingung ist doch z = 0 kleiner arrayOfSingleLine[]etc... ok müsste eigentlich <= heißen damit genau bei z = 0 aufhört doch das spielt jetzt keine rolle. Scheint so als hat die Laufzeitbedingung einen haken mit dem charAt()...


Code:
for(int z = 0 ; z < arrayOfSingleLine[i].charAt(replaceTextStart) ; replaceTextStart--)
{
    System.out.println("Zeile: " + arrayOfSingleLine[i].charAt(replaceTextStart) + "Position: " + replaceTextStart);
}
 
S

SlaterB

Gast
warum so kompliziert?

übe doch erstmal mit einfachen Schleifen a la

for (int i=0; i<4; i--) {
System.out.println(i);
}

das wäre eine richtige Schleife für einen Anfänger, um kennenzuleren, was überhaupt eine Schleife ist

--------

die Schleife wird solange ausgeführt, solange die zweite Bedingung true ergibt,

wenn du die Schleifenvariable verkleinerst, dann macht eine Bedingung < x eher wenig Sinn,

denn entweder läuft die Schleife gar nicht erst los oder fast unendlich lange,
denn eine verkleinerte Schleifenvariable i wird doch immer noch kleiner als x sein
 

0x7F800000

Top Contributor
Ääää :autsch: ja^^ guten tag erstmal^^
Ich hab kein wort verstanden von dem was du da geschrieben hast. Könntest du vielleicht irgendwo "am anfang" anfangen, und zuerst mal kurz skizzieren worum es überhaupt geht und was du tun willst?
Deine schleife wird jedenfalls nicht stoppen, bis irgendwo im string das zeichen (char)0 auftritt (was auch immer das für ein zeichen sein soll). Falls das zeichen in dem String nicht auftritt, fliegt es dir früher oder später um die ohren.

Aber irgendwie sieht das alles extrem schräg aus, was machst du da mit der armen zeichenkette bloß?? :shock: Was für einen grund hast du, diese irgendwie rückwärts zu durchlaufen? ???:L
 
G

Grisha

Gast
SlaterB hat gesagt.:
warum so kompliziert?

übe doch erstmal mit einfachen Schleifen a la

for (int i=0; i<4; i--) {
System.out.println(i);
}

das wäre eine richtige Schleife für einen Anfänger, um kennenzuleren, was überhaupt eine Schleife ist

--------

die Schleife wird solange ausgeführt, solange die zweite Bedingung true ergibt,

wenn du die Schleifenvariable verkleinerst, dann macht eine Bedingung < x eher wenig Sinn,

denn entweder läuft die Schleife gar nicht erst los oder fast unendlich lange,
denn eine verkleinerte Schleifenvariable i wird doch immer noch kleiner als x sein

abgesehen davon, dass ich kein Anfänger bin hast du mein Beispiel nicht verstanden:

arrayOfSingleLine ist ein String über den ich mit charAt iteriere.
replaceTextStart ist z.B. 50, wo ist das problem von 50 negativ zu inkrementieren solange z < ... , ??

Code:
for(int i = 0 ; i < arrayOfSingleLine.length ; i++)
{
		if(arrayOfSingleLine[i].indexOf(pattern) > 0)
		{


                    for(int z = 0 ; z < arrayOfSingleLine[i].charAt(replaceTextStart) ; replaceTextStart--)
                    {
                            System.out.println("Zeile: " + arrayOfSingleLine[i].charAt(replaceTextStart) + "Position: " +              replaceTextStart);
}

...

das war wohl nix wa:

Code:
for (int i=0; i<4; i--) {
System.out.println(i);
}
wie kann ich i mit wert = 0 inkrementieren negativ?
 

0x7F800000

Top Contributor
abgesehen davon, dass ich kein Anfänger bin
bwoah, das können hier nicht allzu viele von sich behaupten... :roll:

Ansonsten:
1) warum das erste code-stück mit einer exception endet, habe ich im letzten beitrag schon erläutert.
2) was gefällt dir denn am zweiten code-stück nicht? hübsche fast-unendlichschleife, die solange läuft, bis es zu einen Underflow kommt, und i plötzlich bei Integer.MAX_VALUE landet, was hast du denn sonst auch erwartet?
3) für "negativ inkrementieren" gibt's nen extra Begriff, heißt "dekrementieren" wenn ich mich recht erinnere...

Also, wie gesagt, erzähl doch mal von anfang an, was dein problem ist. In deinem code sehe ich irgendwo das wort "pattern" und vermute daher, dass du womöglich etwas total krummes vorhast, statt normal regex einzusetzen.
 
S

SlaterB

Gast
> wie kann ich i mit wert = 0 inkrementieren negativ?

ich habe nur dein Beispiel nachgebaut, dass das zu Chaos wie deiner StringIndexOutOfBoundsException führt, ist klar,

selbstverständlich kann man 0 noch weiter dekrementieren, -1, -2, usw

aber deine Antwort sorgt für das Ende meiner Zusammenarbeit
 
G

Grisha

Gast
@Slater
Das mit Ende deiner Zusammenarbeit tut mir leid. Ich kam etwas arrogant rüber. Ich bin eigentlich ein ganz netter.

Mittlerweile hab ich rausgefunden, dass
z < arrayOfSingleLine.charAt(replaceTextStart) an replaceTextStart scheitert, denn irgendwann ist diese Variable mit dem Wert -1 belegt und ein String hat nix an der Stelle -1. D.h. bevor der Vergleich stattfindet, ist der Fehler schon passiert. Aber ich bin wirklich kein Anfänger.
 
G

Grisha

Gast
Grisha hat gesagt.:
@Slater
Das mit Ende deiner Zusammenarbeit tut mir leid. Ich kam etwas arrogant rüber. Ich bin eigentlich ein ganz netter.

Mittlerweile hab ich rausgefunden, dass
z < arrayOfSingleLine.charAt(replaceTextStart) an replaceTextStart scheitert, denn irgendwann ist diese Variable mit dem Wert -1 belegt und ein String hat nix an der Stelle -1. D.h. bevor der Vergleich stattfindet, ist der Fehler schon passiert. Aber ich bin wirklich kein Anfänger.


depp charAt gibt ein char zurück nächstes mal verarscht dich selber aber richtig...
 
G

Grisha

Gast
Ups.. ich habe zu schnell gedacht, denn die Aussage: "charAt gibt ein char zurück " ist ja schon wieder 1 Schritt zu weit. In wirklich keit ist an der Stelle die Frage wichtig: was gibt mir denn arrayOfSingleLine zurück. Ein String .. richtig. Und charAt(-1) auf einem String ausführen ist wohl etwas naiv und ruht in der Tatsache, dass ich vielleicht doch noch ein Anfänger bin.
 

0x7F800000

Top Contributor
Grisha hat gesagt.:
Mittlerweile hab ich rausgefunden, dass
z < arrayOfSingleLine.charAt(replaceTextStart) an replaceTextStart scheitert, denn irgendwann ist diese Variable mit dem Wert -1 belegt und ein String hat nix an der Stelle -1. D.h. bevor der Vergleich stattfindet, ist der Fehler schon passiert.

Ja, schön dass du endlich mal drauf aufmerksam geworden bist, schließlich wurdest du hier schon zweimal drauf hingewiesen.
Für mich ergibt dieser code nach wie vor keinerlei Sinn. Deswegen kann ich dir auch nicht weiterhelfen, weil ich ja nicht nachvollziehen kann, was dein Ziel gewesen ist. Beschreib deswegen lieber dein ziel, statt hier irgendwas über die fehler zu erzählen. Dass der unverständliche code fehler produzieren muss sehen wir auch so.

Aber ich bin wirklich kein Anfänger.
Ja, was soll das jetzt schon wieder? "Kein Anfänger" auf welchem gebiet? Hast du schon ein halbes jahrzehnt Java Enterprise anwendungen programmiert oder was? :roll:

EDIT: Trollt hier schon wieder die Unreg-Paranoia herum? :autsch:
 
G

Grisha

Gast
ich habe die Lösung jetzt. Das war auch nicht schwer ehrlich gesagt:
Code:
  public static void main(String[] args)

  {
    String[] arrayOfSingleLine = new String[3];
    arrayOfSingleLine[0] = "String1";
    arrayOfSingleLine[1] = "String2";
    arrayOfSingleLine[2] = "String3";

    for (int i = 0; i < arrayOfSingleLine.length; i++)
    {
      int replaceTextStart = arrayOfSingleLine[i].length() - 1;
      for (int z = 0; replaceTextStart >= 0; replaceTextStart--)
      {
        System.out.println("Zeile: "
            + arrayOfSingleLine[i].charAt(replaceTextStart) + "Position: "
            + replaceTextStart);
      }
    }
  }

Eine Frage noch: Was soll ich mit der Variable z machen?

Doswidaniya
 

0x7F800000

Top Contributor
maki hat gesagt.:
Am besten aufheben, z kann man immer brauchen.
Hehe, ich glaub das war wieder die "unreg-paranoia" ???:L
Zum einen ist der code plötzlich sauber formatiert und sogar ohne änderungen lauffähig.
Zum anderen wird in dem Beitrag nicht rumgemotzt.
Und um das alles authentischer Wirken zu lassen, hat die "unreg-paranoia" sich sogar die mühe gegeben, herauszufinden, dass "Grisha" wohl ein name aus dem Slawischen sprachraum sein soll, und hat da sogar was auf "russisch" hingeschrieben...

wenn ich recht habe, dann ist das schon eine merkwürdige sache^^ :autsch:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A ArrayList-iteration mit Prüfung auf instanceof durch switch case? Java Basics - Anfänger-Themen 13
Mehmetaa Iteration Java Basics - Anfänger-Themen 3
Henri Iteration lauft nicht gut Java Basics - Anfänger-Themen 7
Henri Erste Schritte Iteration ändern Java Basics - Anfänger-Themen 12
I Iteration in Feldern Java Basics - Anfänger-Themen 2
C Compiler-Fehler Wird eine if Bedingung nach einer for-Schleife nach jeder Iteration überprüft? Java Basics - Anfänger-Themen 1
F Array Iteration Java Basics - Anfänger-Themen 4
M Löschen von Objekten während Iteration über Liste Java Basics - Anfänger-Themen 9
K Stammbaum durchlaufen (Iteration etc) Java Basics - Anfänger-Themen 9
D Rekursion in Iteration Java Basics - Anfänger-Themen 5
K Iteration - Alte und neue For Schleife Java Basics - Anfänger-Themen 17
J Umgekehrte Iteration Java Basics - Anfänger-Themen 5
Q Iteration wie machen Java Basics - Anfänger-Themen 5
W iteration Java Basics - Anfänger-Themen 8
H Iteration und Editierung einer Liste Java Basics - Anfänger-Themen 6
B Collection während Iteration verändern Java Basics - Anfänger-Themen 7
T Iteration Java Basics - Anfänger-Themen 3
C Lösung einer Aufgabe mittels Iteration und Rekursion Java Basics - Anfänger-Themen 12
W Aus Iteration mach Rekursion Java Basics - Anfänger-Themen 3
G Rekursion versus Iteration Java Basics - Anfänger-Themen 58
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
A 1 Leerzeichen durch zwei Leerzeichen ersetzen Java Basics - Anfänger-Themen 4
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K mit <<1 kann man mal 2 machen, mit >>2 geteilt durch zwei und was bewirkt <<<1 und >>>1? Java Basics - Anfänger-Themen 5
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
F Methode für Teilbarkeit durch 5 tut was anderes.... Java Basics - Anfänger-Themen 3
H Aufruf von Methoden durch Methoden Java Basics - Anfänger-Themen 3
H Wie kann ich durch Methoden definiren? Java Basics - Anfänger-Themen 8
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
O Typparameter durch Wildcards verallgemeinern Java Basics - Anfänger-Themen 3
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
H Array mit Zahlen die durch 3 und 5 teilbar sind erstellen Java Basics - Anfänger-Themen 13
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
S For-Schleife durch "ESC" verlassen? Java Basics - Anfänger-Themen 2
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
V Durch 0 teilen Java Basics - Anfänger-Themen 2
V Durch Methode Objekt löschen Java Basics - Anfänger-Themen 2
D Klasse durch eine Schleife wiederholen Java Basics - Anfänger-Themen 1
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
W Objektname durch Tastaturbefehl eingeben Java Basics - Anfänger-Themen 7
K ArrayList durch ArrayList ersetzen Java Basics - Anfänger-Themen 5
G Objektübergabe durch Parameter Java Basics - Anfänger-Themen 3
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
T Threads Durch threads gestartete Prozesse killen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben