Problem mit Array's (glaub ich)

Status
Nicht offen für weitere Antworten.

StarSeven

Bekanntes Mitglied
Hallo, ich weiss mal wieder nicht was ich falsch mache :-(.
Ich habe mir zwei Array's gebastelt, das eine char[]-Array ist mit allen Möglichen Zeichen gefüllt, und das andere String[]-Array ist mit ZahlenStrings gefüllt.
Wenn ich mit lenth() die Größe (Anzahl der enthaltenen Elemente) des char[]-Arrays bekommen möchte gibt er mir 100 aus, bei den Zahlen gibt er mir 97 aus.
Jetzt die erste Seltsamkeit das char[]-Array beinhaltet meiner Meinung nach jedoch nur 97-Elemente (ich habe mir sogar die Arbeit gemacht und alle Zeichen auf ein Blatt aufzuschreiben und darunter die Zahlen), dass String[]-Array dagegen gibt es mir so aus wie ich will, es beinhaltet die Zahlen 1 - 97 in Zeichenfolgenform.
Jetzt habe ich den Inhalt aus einen Textfeld genommen, der eingegebene String wird nach Zeichen durchsucht die in meinen char[]-Array enthalten sind und werden dann durch die entsprechende Zeichenfolge im String-Array ersetzt. Beispielsweise beinhaltet das Textfeld den Buchstaben 'A' so wird dieser durch "87" ersetzt, der Buchstabe 'B' durch "86" usw..
Das klappt auch alles wunderbar, ausser bei ein paar Ausnahmefällen:
(1) enthält das Textfeld eine Zahl zwische 0 und 8 (welche den Zahlen 97 - 89 entsprechen) so stürzt das Programm ab
(2) Die letzten beiden Zeichen meines char[]-Array's sind '³' und '@', bei ihnen gibt das Programm nicht die entsprechenden Zahlen (02 und 01) aus sondern das Zeichen selber
(3) Enthält das Textfeld mein 3't letztes Zeichen meines char[]-Arrays ('²' welches 03 entspricht) bekomme ich diese Fehlermeldung
Code:
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 97
	at Passprot.mutate(Passprot.java:252)
	at View$2.actionPerformed(View.java:89)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1461)
	at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1515)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:392)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:264)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:254)
	at java.awt.Component.processMouseEvent(Component.java:3799)
	at java.awt.Component.processEvent(Component.java:3628)
	at java.awt.Container.processEvent(Container.java:1202)
	at java.awt.Component.dispatchEventImpl(Component.java:2678)
	at java.awt.Container.dispatchEventImpl(Container.java:1251)
	at java.awt.Component.dispatchEvent(Component.java:2581)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2496)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2261)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2170)
	at java.awt.Container.dispatchEventImpl(Container.java:1238)
	at java.awt.Window.dispatchEventImpl(Window.java:964)
	at java.awt.Component.dispatchEvent(Component.java:2581)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:434)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:141)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:132)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:124)

Die Fälle mit den letzten drei Zeichen meines char[]-Arrays liegen wahrscheinlich daran das er sagt das mein char[]-Array 100 Zeichen beinhaltet, aber wie gesagt, ich habe es schon mehrmals nachgezählt, entweder bin ich zu blöde, oder ich weiß auch nicht. Ich hatte auch mal noch 3 Zeichenketten zu meinen String Array hinzugefügt, allerdings waren dadurch die ganzen Werte verschoben was an und für sich ja nicht so schlimm ist, aber mich wunderts een warum er mir sagt das char[]-Array hat 100 Zeichen.
Bei den Fällen von den Zahlen von 0 - 8 dachte ich zuerst es liegt daran das ich die zu ersetzenden Zeichen durch Zeichenketten von "1" bis "9" nicht "01", "02", "03"... gemacht habe, dann habe ich es allerdings so geändert das jedes Zeichen welches ersetzt wird eine Zeichenfolge mit 2 Zeichen bekommt, aber der Fehler blieb bestehen.

Hier ist die Methode mutate, würde mich freuen wenn ihr mir helfen könnt:
Code:
public void mutate() {
		String input, firstpart, secondpart;
		int laenge, i, pos, ii;
		char symbols[] =
			{
				'0',
				'1',
				'2',
				'3',
				'4',
				'5',
				'6',
				'7',
				'8',
				'9',
				'A',
				'B',
				'C',
				'D',
				'E',
				'F',
				'G',
				'H',
				'I',
				'J',
				'K',
				'L',
				'M',
				'N',
				'O',
				'P',
				'Q',
				'R',
				'S',
				'T',
				'U',
				'V',
				'W',
				'X',
				'Y',
				'Z',
				'a',
				'b',
				'c',
				'd',
				'e',
				'f',
				'g',
				'h',
				'i',
				'j',
				'k',
				'l',
				'm',
				'n',
				'o',
				'p',
				'q',
				'r',
				's',
				't',
				'u',
				'v',
				'w',
				'x',
				'y',
				'z',
				'-',
				'_',
				'.',
				',',
				':',
				'+',
				'/',
				'\\',
				'=',
				'?',
				'(',
				')',
				'!',
				'<',
				'>',
				'*',
				'#',
				'~',
				'\'',
				'&',
				'%',
				'$',
				'§',
				'\"',
				'^',
				' ',
				'°',
				'|',
				'{',
				'}',
				'[',
				']',
				'ß',
				'`',
				'´',
				'²',
				'³',
				'@' };
		String numbers[] =
			{
				"97",
				"96",
				"95",
				"94",
				"93",
				"92",
				"91",
				"90",
				"89",
				"88",
				"87",
				"86",
				"85",
				"84",
				"83",
				"82",
				"81",
				"80",
				"79",
				"78",
				"77",
				"76",
				"75",
				"74",
				"73",
				"72",
				"71",
				"70",
				"69",
				"68",
				"67",
				"66",
				"65",
				"64",
				"63",
				"62",
				"61",
				"60",
				"59",
				"58",
				"57",
				"56",
				"55",
				"54",
				"53",
				"52",
				"51",
				"50",
				"49",
				"48",
				"47",
				"46",
				"45",
				"44",
				"43",
				"42",
				"41",
				"40",
				"39",
				"38",
				"37",
				"36",
				"35",
				"34",
				"33",
				"32",
				"31",
				"30",
				"29",
				"28",
				"27",
				"26",
				"25",
				"24",
				"23",
				"22",
				"21",
				"20",
				"19",
				"18",
				"17",
				"16",
				"15",
				"14",
				"13",
				"12",
				"11",
				"10",
				"09",
				"08",
				"07",
				"06",
				"05",
				"04",
				"03",
				"02",
				"01"};
		input = view.jtf_username.getText();
		laenge = input.length();
		for (i = 0; i != 98; i++) {
			for (ii = 0; ii != laenge;) {
				laenge = input.length();
				pos = input.indexOf(symbols[i]);
				if (pos != -1) {
					firstpart = input.substring(0, pos);
					if (pos + 1 != laenge) {
						secondpart = input.substring(pos + 1, laenge);
					} else {
						secondpart = "";
					}
					input = firstpart + numbers[i] + secondpart;
				} else {
					ii = laenge;
				}
			}
		}
		System.out.println(input);
	}
 

Nobody

Top Contributor
???:L ka was genau du aussagen willst, aber ich glaube du willst ungefähr auf das raus:
du willst die 97. stelle (97 einträge und der fehler mit 97...).

nun java zählt hier aber so:
0 1 2 3 ......
ergo gillt, das die 97. position mit dem index 96 "beschriftet" ist.
length() gibt dir aber 97 aus, sind ja auch 97 zeichen, daher length()-1


wars das?
wenn nicht, drück mal aus was genau nicht geht
 

StarSeven

Bekanntes Mitglied
Also, was ich meine ist:
Warum haben die Array's nicht die gleiche Anzahl von Elementen (ich habe eigenlich alle durchgezählt und bin immer auf die selbe Anzahl gekommen), aber das ist nur mein sekundäres Problem, das primäre Problem ist das es bei Eingaben wo die Zahlen 0, 1, 2, 3, 4, 5, 6, 7 oder 8 vorkommen abstürzt und ich weiß absolut nicht warum ???:L
 
B

bygones

Gast
also wegen ungleicher Zahl... ich würde mal behaupten, dass du dich verzählt hast, Java gibt versch. Längen aus und ich glaube nicht, dass Java sich da verzählt.

Wegen deinem Abstürzen. Bei welchen Eingaben stürzt er denn ab, ich konnte als String alles mögliche eingeben und er gibt immer was aus (BTW: Ich habe keine Ahnung was das Programm macht / soll ???:L :? :wink: )
 

StarSeven

Bekanntes Mitglied
Also bei mir hatte es nicht geklappt, deswegen habe ich jetzt noch ein bischen ws geändert, aber nun stürzt IMMER das Programm ab, deswegen werde ich jetzt mal in allen Einzelheiten schreiben was ich machen will in der Hoffnung ihr könnt mir helfen ^^.
- ich erstelle
Code:
char symbols[] = {/*lauter verschiedene Zeichen*/};
- ich erstelle
Code:
String numbers[] = {/*Zeichenketten die so sind "00", "01", "02"... dies geht bis "99"};
- wenn ich
Code:
System.out.println(symbols.length + "\n" + numbers.length);
mache wird
Code:
100
100
ausgegeben
- nun speichere ich die zu umwandelnde Zeichenkette in 'input' in dem ich
Code:
Textfeld.getText();
mache
- mit
Code:
laenge = input.length();
wird die länge der Zeichenkette ermittelt und in der Variable 'laenge gespeichert
- jetzt kommt ein wenig mehr code:
Code:
for (i = 0; i != 99; i++) { 
/* es wird eine Schleife gestartet die so oft durchläuft wie die Array's Elemente besitzen*/
			for (ii = 0; ii != laenge;) {
/* Es wird eine Schleife gestartet die so oft durchläuft wie die eingegebene Zeichenkette Zeichen hat*/
				laenge = input.length();
/* Die länge von der Zeichenkette die umgewanelt werden soll wird in 'laenge' gespeichert*/
				pos = input.indexOf(symbols[i]);
/* Es wird Position des jeweiligen Elementes von 'symbols'  von 'input' ermittelt und in 'pos' gespeichert*/
				if (pos != -1) {
/*Wenn es das Zeichen in 'input' gab (pos!= -1) mach...*/
					firstpart = input.substring(0, pos);
/*in 'firstpart' wird der gesamte Teil gespeichert der vor dem jeweiligen Element von 'symbols' in der eingegebenen Zeichenkette ist*/
					if (pos + 1 != laenge) {
/*Wenn Das Element nicht das letzte Zeichen in der eingegebenen Zeichenkette war...*/
						secondpart = input.substring(pos + 1, laenge);
/*nimm den gesamten Teil der eingegebenen Zeichenkette der nach dem jeweiligen Zeichen von 'symbols[]' kommt und speichere ihn in dem String 'secondpart'*/
					} else {
						secondpart = "";
/*Wenn nicht ist 'secondpart' = "" also nüscht*/
					}
					input = firstpart + numbers[i] + secondpart;
/* input ist nun der gesamte Teil der eingegebenen Zeichenkette vor dem jeweiligen Element von 'symbols[]' + die jeweilige Zeichenkette von 'number[]' und der ganze Rest von der eingegebenen Zeichenkette*/
				} 
			laenge = input.length();
/* da sich die laenge von input verändert haben könnte wird sie erneut ermittelt und in 'laenge' gespeichert*/
			}
		}
Das ganze dient dazu das ich aus einem String alle Zeichen in String's ändern will, welche ich zu einem Integer verändern möchte die ich dann in Dualzahlen verändere, so weit bin ich allerdings noch nicht.
Dienen soll das ganze dazu das nicht gleich jeder meine Sachen lesen kann. Aber ich möchte keine vorgefertigte Verschlüsselungen verwenden, ich weiß zwar das mein's (wenn man es Verschlüsselung nennen darf) nicht sehr sicher ist, aber es reicht mir ^^.
Ich hoffe ich habe jetzt alles einigermaßen verständlich formuliert :).
 

Nobody

Top Contributor
so hab nochmal nachgezählt:
wenn du kein zeichen vergessen hast:
0-9 10 zeichen
a-z 26 zeichen
A-Z 26 zeichen
restlichen 39 zeichen (2mal nachgezählt)
macht 101
 
B

bygones

Gast
soso ne Verschlüsselung soll es werden - schön das wir das hier diskutieren :D :lol:
 

StarSeven

Bekanntes Mitglied
Naja, den größten Denkfehler weiß ich jetzt glaube ich.
Wenn irgendein Zeichen durch einen Zahlenstring ersetzt wird, werden die Zahlen ja auch wieder ersetzt und immer so weiter, logischerweise wird dadurch alles zig mal verändert oder?
Ich müsste das dann so machen:
nimm länge des unbekannten Strings
nehme hintereinander alle Zeichen
schaue nach welches Zeichen das erste ist, wenn es ist x ersetze es durch yy usw.
oder sehe ich da was falch?
Kann sein das ich wieder einen denkfehler drin habe bin erst vor 5 Minuten aufgestanden :D
 

StarSeven

Bekanntes Mitglied
Hmmm, ich habe den Code ein wenig verändert und habe jetzt auch ein Ergebnis, jedoch klappt noch nicht alles so wie es soll (die'|' sind nur zur besseren Übersicht da).
1.Eingabe = hallo --> Ausgabe = 63|56|52|52|49
2.Eingabe = h --> Ausgabe = 56
3.Eingabe = a --> Ausgabe = 63
4.Eingabe = l --> Ausgabe = 52
2.Eingabe = o --> Ausgabe = 49
--> 1.Ausgabe = "ahllo" und nicht "hallo"
Ich habe noch zwei weitere Versuche gestartet mit anderen Eingaben und es kam immer das selbe raus, die Ausgabe war Alphabetisch geordnet.
Das seltsame ist nur ich habe keinen .sort-Befehl oder ähnliches angewandt.
Hier ist mein neuer Code:
Code:
oldString = view.jtf_username.getText();
		//oldString = eingabe
		laenge = oldString.length();
		//laenge = Anzahl der Zeichen von oldString
		for (i = 0; i != 100; i++) {
			//Schleife die so oft durchläuft wie Array's Anzahl haben
			for (ii = 0; ii != laenge; ii++) {
				// Schleife die so lange durchläuft wie oldString Zeichen hat
				presentlyChar = oldString.substring(ii, ii + 1);
				//presentlyChar = jeweilige Zeichen von oldString
				pos = presentlyChar.indexOf(symbols[i]);
				//kontrolliert welches Zeichen das jeweilige ist
				if (pos != -1) {
					//Wenn es das richtige ist dann...
					presentlyChar = numbers[i];
					//presentlyChar = entsprechender Zahlenstring
					newString = newString + numbers[i];
					//newString wird dann um den jeweiligen 
					//Zahlenstring erweitert
				}
			}
		}
		System.out.println(newString);
Ich würde mich freuen wenn ihr mir sagen könnt warum die Ausgabe alphabetisch geordnet ist.
 

StarSeven

Bekanntes Mitglied
Ich bin vielleicht doof ^^,
habe die Schleifen vertauscht, natürlich muss diese Schleife die äussere sein:
Code:
for (ii = 0; ii != laenge; ii++)
und diese die innere
Code:
for (i = 0; i != 100; i++)
dann klappets auch :).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
A Array problem Java Basics - Anfänger-Themen 16
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
B Array Problem Java Basics - Anfänger-Themen 3
F Problem mit der Aufgabe(Array) Java Basics - Anfänger-Themen 21
H boolean Array Problem Java Basics - Anfänger-Themen 7
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
S Problem: Array alle Einträge gleich Java Basics - Anfänger-Themen 10
L Array-Problem/Zufallszahlen Java Basics - Anfänger-Themen 7
G Problem mit Array Java Basics - Anfänger-Themen 2
K Problem mit Methode(Array,Boolean,ForSchleife) Java Basics - Anfänger-Themen 6
C Problem mit Arrays im Array Java Basics - Anfänger-Themen 11
A Problem mit Array Ausgabe Java Basics - Anfänger-Themen 7
L 2 dimensionales Array, Problem der Ausgabe Java Basics - Anfänger-Themen 4
E Array Problem Java Basics - Anfänger-Themen 1
L Problem mit Array Programm Java Basics - Anfänger-Themen 2
M Array problem Java Basics - Anfänger-Themen 9
M If und Array-Problem Java Basics - Anfänger-Themen 6
P OOP Array-Problem Java Basics - Anfänger-Themen 5
S Problem mit Array.Length Java Basics - Anfänger-Themen 2
R Array Problem Java Basics - Anfänger-Themen 17
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
P Array queue problem Java Basics - Anfänger-Themen 1
E Array zu Liste - kleines Problem Java Basics - Anfänger-Themen 6
F Problem mit Array Java Basics - Anfänger-Themen 8
N OOP Problem mit Array Java Basics - Anfänger-Themen 17
M Problem mit 2D Array Java Basics - Anfänger-Themen 3
M Problem mit Array und replace Java Basics - Anfänger-Themen 3
D Array Problem Java Basics - Anfänger-Themen 4
F Array Problem !? Java Basics - Anfänger-Themen 6
M Erste Schritte Array Problem Java Basics - Anfänger-Themen 8
F Problem mit Array, Java Basics - Anfänger-Themen 4
F Problem: Verschlüsselung von String in Array Fehler Java Basics - Anfänger-Themen 2
S Problem bei Kollision zwischen Array-objekten! Java Basics - Anfänger-Themen 2
B Problem mit Array Java Basics - Anfänger-Themen 5
J Array Problem Java Basics - Anfänger-Themen 2
K Problem beim Array aufruf Java Basics - Anfänger-Themen 4
D Klassen Problem mit Eigener Array-Klasse Java Basics - Anfänger-Themen 10
N Array problem bei einem magischen Quadrats Java Basics - Anfänger-Themen 3
P Klassen Klassen mit Array Problem Java Basics - Anfänger-Themen 4
T Problem mit Array Konvertierung Java Basics - Anfänger-Themen 13
T ArrayIndexOutOfBoundsException - Problem mit Array-Größe Java Basics - Anfänger-Themen 4
L Array Problem NullPointerException Java Basics - Anfänger-Themen 3
K Problem: Array String to Integer Java Basics - Anfänger-Themen 2
M Char-Array Problem Java Basics - Anfänger-Themen 6
D Problem mit TextFeld Array Java Basics - Anfänger-Themen 18
A Array Zugriff- Problem Java Basics - Anfänger-Themen 5
V 2D - Objekt Array Problem Java Basics - Anfänger-Themen 3
K Java Array Problem Java Basics - Anfänger-Themen 3
L Problem mit Array Java Basics - Anfänger-Themen 3
K kleines Array-Problem Java Basics - Anfänger-Themen 6
X Array out of bounds problem Java Basics - Anfänger-Themen 7
M Array Problem Java Basics - Anfänger-Themen 2
K Generische Klasse mit innerer Klasse | Problem mit Array Java Basics - Anfänger-Themen 6
E Array Problem... Java Basics - Anfänger-Themen 14
P array problem Java Basics - Anfänger-Themen 9
P Codeschnipsel Verständnis Problem (Array) Java Basics - Anfänger-Themen 6
F Array Problem bei ByteburgTarif Java Basics - Anfänger-Themen 2
P Problem mit Laden und Ausgeben eines array-Objekts Java Basics - Anfänger-Themen 4
A Problem mit einem Array aus JButtons Java Basics - Anfänger-Themen 4
D Array multiplikations Problem Java Basics - Anfänger-Themen 26
D Array Problem Java Basics - Anfänger-Themen 5
B Mehrdimensionale Array Problem Java Basics - Anfänger-Themen 12
T Array-Vector Problem Java Basics - Anfänger-Themen 18
T Blutiger Anfänger mit Array Problem Java Basics - Anfänger-Themen 8
T problem mit array Java Basics - Anfänger-Themen 9
S String split array.length Problem Java Basics - Anfänger-Themen 3
B Problem mit Object Array Java Basics - Anfänger-Themen 8
W Problem mit BubbleSort und Array Java Basics - Anfänger-Themen 10
G Problem mit der Rückgabe von einem Array Java Basics - Anfänger-Themen 3
G Array-Problem Java Basics - Anfänger-Themen 3
M sinus berechnen array problem Java Basics - Anfänger-Themen 2
C array problem Java Basics - Anfänger-Themen 7
G Array ,Matrix Problem Java Basics - Anfänger-Themen 20
Antoras Problem mit Array Java Basics - Anfänger-Themen 5
K Problem mit 2 Dimensionalen Array Java Basics - Anfänger-Themen 4
D Array reverse Problem, da Referenz nicht auf tmpArray zeigt Java Basics - Anfänger-Themen 4
G Kleines Problem mit Array Java Basics - Anfänger-Themen 14
0 Array problem Java Basics - Anfänger-Themen 4
S Problem mit Array-Erstellung Java Basics - Anfänger-Themen 5
A array problem Java Basics - Anfänger-Themen 4
G array Problem Java Basics - Anfänger-Themen 9
H Problem mit array Java Basics - Anfänger-Themen 5
zilti Array-Problem Java Basics - Anfänger-Themen 6
J Array - Vertauschen Problem mit char/int Java Basics - Anfänger-Themen 6
M Problem mit Array in Methodenkopf Java Basics - Anfänger-Themen 2
K problem beim schreiben in ein int-array Java Basics - Anfänger-Themen 9
S JTable Problem mit einzufügendem Array Java Basics - Anfänger-Themen 6
D Problem mit Array brauche schnell Hilfe Java Basics - Anfänger-Themen 11
R Problem mit AbstractTableModel oder Array! Java Basics - Anfänger-Themen 5
G Problem mit Array bei einem 4-Gewinnt Spiel Java Basics - Anfänger-Themen 2
K problem mit resultset und 2d-array Java Basics - Anfänger-Themen 3
G Problem mit array Java Basics - Anfänger-Themen 2
P Array-Problem Java Basics - Anfänger-Themen 4
L Array Problem Java Basics - Anfänger-Themen 9
B Array Manipulation Problem Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben