Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Substring finden » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen Substring finden
Beiträge zu diesem Thema Autor Datum
 Substring finden neuling96 05.01.2015 04:24
 RE: Substring finden eulerscheZahl 05.01.2015 07:46
 RE: Substring finden neuling96 05.01.2015 08:32
 RE: Substring finden eulerscheZahl 05.01.2015 08:59
 RE: Substring finden neuling96 05.01.2015 09:08
 RE: Substring finden neuling96 05.01.2015 09:14
 RE: Substring finden neuling96 05.01.2015 09:48
 RE: Substring finden eulerscheZahl 05.01.2015 10:44
 RE: Substring finden neuling96 05.01.2015 10:49
 RE: Substring finden neuling96 05.01.2015 10:57
 RE: Substring finden eulerscheZahl 05.01.2015 11:06
 RE: Substring finden neuling96 05.01.2015 11:15
 RE: Substring finden eulerscheZahl 05.01.2015 11:18
 RE: Substring finden neuling96 05.01.2015 11:32
 RE: Substring finden eulerscheZahl 05.01.2015 12:07

Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
Substring finden Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

hi, aufgabe a habe ich bereits
und b bin ich mir nicht sicher
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public static void printPalindromicStrings(String param){
for( int i=2; i<param.length; i++){
String [] substring= new String [i];
for(int y=0; y<=i;y++){
substring[y]=param[y];
}
}
if (isPalindrome(substing){
System.out.println("Subarray: " +substring);


neuling96 hat dieses Bild (verkleinerte Version) angehängt:
Unbenannt.jpg

05.01.2015 04:24
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wozu brauchst du da ein Array aus Strings?
Außerdem lässt sich das nicht mal kompilieren.

Das Erstellen aller substrings bekommst du so hin: lege eine Startposition fest (ein einer Schleife, da für jeden Startindex substrings gebildet werden können). Lege in einer zweiten Schleife die Endposition fest.
Für einen String der Länge n ergeben sich so [latex]\frac{n \cdot (n+1)}{2}<br />
[/latex] Teilstrings
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public static void printPalindromicStrings(String param){
	for (int start = 0; start < param.length(); start++) {
		for (int end = start + 1; end <= param.length(); end++) {
			String substring = param.substring(start, end);
			if (isPalindrome(substring))
				System.out.println(substring);
		}
	}
}


__________________
Syntax Highlighting fürs Board (Link)
05.01.2015 07:46 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke!
ich dachte ganzezeit dass ich ein array vom typ string habe
gut, zum beispiel kannte ich den befehl noch gar nicht param.substring(start, end);
da muss ich mich noch einarbeiten

eins noch , mal angenommen wir hätten ein String []param vorliegen, ginge das dieser code?
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public class E {
public static void printPalindromicStrings(String []param){
for( int i=2; i<param.length; i++){
String [] substring= new String [i];
for(int y=0; y<=i;y++){
substring[y]=param[y];
}
}
if (isPalindrome(substring))
System.out.println("Subarray: " +substring);
}
}

05.01.2015 08:32
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das lässt sich nicht kompilieren.
Zeile 4 z.B. müsste heißen String substring= param[i];
bei y erkenne ich die Absicht nicht, die dahintersteckt.

wenn du für jeden einzelnen String im Array testen willst, ob er ein Palyndrom ist:
code:
1:
2:
3:
4:
5:
6:
public static void printPalindromicStrings(String[] param) {
    for (int i = 0; i < param.length(); i++) {
        if (isPalindrome(param[i]))
            System.out.println(param[i]);
    }
}


__________________
Syntax Highlighting fürs Board (Link)
05.01.2015 08:59 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

bevor wir weitermachen eine wichtige frage
kann man ein string array folgendermaßen darstellen ?

String []param={a,b,c }
05.01.2015 09:08
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

String [] substring= new String [i];
for(int y=0; y<=i;y++){
substring[y]=param[y];

damit wollte ich zum beispiel für den fall i=1 und String []param={a,b,c }
ein string sub array konstruieren, sodass

substring[0]=param[0];
substring[1]=param[2];

d.h

substring[0]=a;
substring[1]=b;

substring={a,b} und den anschließend auf Palindrom testen
05.01.2015 09:14
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

isPalindrome soll überprüfen

setze soll einen subarray lieferen zum
bsp
a= {1,2,3,4}
für den fall i= 2

substring = {1,2}

dann mit printPalindromicStrings der test für den sub array.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:

public class E {
public static boolean isPalindrome(String []param){
boolean a=true;
for (int i=0; i<param.length; i++){
if (param[i]!=param[param.length-1-i])
a=false;
break;
}
return a;
}
public static String[] setze(String []param, int i){
String [] substring= new String [i];
for(int y=0; y<i-1;y++){
substring[y]=param[y];
}
return substring;
} 

public static void printPalindromicStrings(String []param){

for (int i=2; i<param.length; i++){

if (isPalindrome(setze(param, i))){
System.out.println(setze(param, i));
}
}
}
}


05.01.2015 09:48
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Um ein String[] zu erzeugen, musst du Strings übergeben.
Also nicht a= {1,2,3,4}, sondern a= new String[] {"1","2","3","4"}

Wenn du prüfen willst, ob 2 Strigns gleich sind, geht das mit myString.equals(otherString);

for(int y=0; y<i-1;y++)
entweder y < i oder y <= i-1, sonst nimmst du einen Eintrag zu wenig mit.

bei der Ausgabe der Palindrome ist mir nicht klar, warum du bei 2 anfängst und nicht bei 0.

Zitat:
setze soll einen subarray lieferen zum

dann sollte man die Funktion vielleicht auch liefereSubarray nennen. Noch schlimmer sind nur die Funktionen, die ein liefere/get im Namen haben und dann anfangen, Werte zu überschreiben - damit rechnet doch keiner.

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 05.01.2015 10:45.

05.01.2015 10:44 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

bis auf deine Anmerkungen stimmt der code?
also macht was er soll?
05.01.2015 10:49
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ich kenne den befehl myString.equals(otherString) noch nicht, deshalb der umweg
05.01.2015 10:57
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Frage ist eben, was genau du vorhast.
Wenn du die Aufgabe lösen willst, bist du ganz falsch. Dafür habe ich ja bereits eine Lösung geliefert.

Was du machst, ist zu prüfen, ob ein String-Array ein Palindrom ist, also z.B. {"a", "b", "a"}

if (param[i]!=param[param.length-1-i]) geht so eben nicht. Wenn du zweimal einen String mit dem selben Inhalt erstellst, sind es immer noch zwei Strings. == prüft die Adresse im Speicher und liefert dann false.

Im Sinne der Aufgabe bräuchtest du kein String[], sondern ein char[]

__________________
Syntax Highlighting fürs Board (Link)
05.01.2015 11:06 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von eulerscheZahl

Im Sinne der Aufgabe bräuchtest du kein String[], sondern ein char[]


d.h wenn ich einen char [] hätte müsste ich auf meine art lösen und bei string auf deine art?
05.01.2015 11:15
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja.
Du kannst den String aber auch in ein char[] umwandeln.

__________________
Syntax Highlighting fürs Board (Link)
05.01.2015 11:18 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von eulerscheZahl
Ja.
Du kannst den String aber auch in ein char[] umwandeln.


1)String ist ein Objekttyp, darum die Schwierigkeit, korrekt? ( für primitivetypen wie int, double) wäre alles ok?
2) Wie wandelt man bzw. wann darf man umwandeln?
3)Wie würde ich hier die main schreiben, umzurpüfen, dass der code das tut, was er soll.
05.01.2015 11:32
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

1) ja
2) z.B. "lotto".toCharArray();
3)
code:
1:
2:
3:
public static void main(String[] args) {
	printPalindromicStrings("lotto");
}


__________________
Syntax Highlighting fürs Board (Link)
05.01.2015 12:07 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Informatiker Board » Themengebiete » Praktische Informatik » Substring finden