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

Informatiker Board » Themengebiete » Praktische Informatik » Java lernen 2 » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Java lernen 2
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
javaneu
unregistriert
Java lernen 2 Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Ich habe auch gerade bei einer weiteren Aufgabe probleme ,die ich poste:

Erstellen Sie eine Klasse Strings mit einer Klassenmethode public static void substrings(String
s, int len).
Diese soll untereinander alle Teilstrings von s ausgeben, die die Länge len haben, beim Eingabestring
"ABCDEF" und len == 3 also:
ABC
BCD
CDE
DEF
1
Wenn len kleiner als 1 oder größer als der String s ist, soll allerdings stattdessen "FEHLER: Keine
Teilstrings!" ausgegeben werden.
Hinweis: Nutzen Sie die Methode String.substring.


Diesen teil habe ich irgendwie versucht zu proggen:

Wenn len kleiner als 1 oder größer als der String s ist, soll allerdings stattdessen "FEHLER: Keine
Teilstrings!" ausgegeben werden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:

public class Strings
{
   public static void substrings(String s, int len){
       
       
       if(len <1 || len >s ){
           system.out.println(" Fehler: Keine Teilstrings ");
        
        }
    
    }
}


Aber habt ihr paar tips für mich für diesen Aufgabenteil:

Diese soll untereinander alle Teilstrings von s ausgeben, die die Länge len haben, beim Eingabestring
"ABCDEF" und len == 3 also:

Hier habe ich grad sau die Schwierigkeiten auf einen Ansatz zu kommen?

Meine Ideen:
gepostet
27.02.2015 01:26
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

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

Mit len>s vergleichst Du Äpfel mit Birnen, da len eine Zahl ist und s ein String, d.h. eine Zeichenkette. In Java kann man die Länge von Zeichenketten mit .length() abfragen. Korrekt wäre also:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public class Strings
{
	public static void substrings(String s, int len){
		if(len <1 || len >s.length() ){
			System.out.println(" Fehler: Keine Teilstrings ");
		}
	}
}


Weiterhin kann man von Strings einen Substring mit .substring(x,y) erzeugen, wobei x der Startindex und y der Endindex ist. Das Zeichen unter dem Endindex wird dabei nicht mit ausgegeben.

Schau dir mal folgendes Programm an und versuche es zu verstehen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public class Strings
{
	public static void main(String[] args){
		String testString = "Test";
		System.out.println(testString.substring(0,3)); 
		System.out.println(testString.substring(0,4));
		System.out.println(testString.substring(0,testString.length()));
		System.out.println(testString.substring(2,4));
	}
}


VIelleicht bekommst Du damit schon einen Ansatz für das Programm. Wenn da noch fragen sind, bitte gern nachfragen.

Gruß,

Karlito
27.02.2015 03:28 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
javaneu
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

Das Problem ist ja ,dass immer der zweite Index an der ersten Stelle kommt und das alphabet weiter geht.

Warum berücksichtige ich da dann nur noch den ersten und den letzten?

Zuerst muss ich doch eine for schleife erstellen oder ?

for( int s = 0 , s> s.length(), i++){

hier irgendwie if Bedingung?



}
27.02.2015 12:01
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 Methode substring interessiert sich nur dafür, von wo bis wo du die Zeichen haben möchtest - dass es sich hier um den Anfang des Alphabets handelt, ist komplett egal.

Zitat:
for( int s = 0 , s> s.length(), i++){

aber s ist doch bereits ein String, wie soll es da plötzlich ein int sein?
Ich nehme an, du wolltest es so schreiben:
for (int i = 0; i < s.length(); i++) { Teilstring ausgeben}
Du gehst hier aber zu weit: Wenn du in deinem Beispiel erst bei F startest, kannst du keine 3 Zeichen mehr ausgeben.

__________________
Syntax Highlighting fürs Board (Link)
27.02.2015 15:53 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
javaneu
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 möchte ja bei a starten ,aber wie erkläre ich das dem Computer ( bluej) großes Grinsen
27.02.2015 17:06
javaneu
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

Brauche ich hier auch keine for schleife ?
27.02.2015 17:08
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

Natürlich brauchst du eine Schleife.
Aber die musst sich auch richtig schreiben:
die Teile werden durch ';' getrennt, nicht durch ','.
und du solltest die Schleifenvariable durchgehend i nennen, schließlich ist s schon vergeben

Wenn wir uns man nur auf das gegebene Beispiel konzentrieren und dort ABC, BCD, CDE, DEF ausgeben wollen, wie kriegst du das mittels substring hin (erst mal ohne Schleife, um die kümmern wir uns später)?

__________________
Syntax Highlighting fürs Board (Link)
27.02.2015 17:48 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
javaneu
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

Es wird ja immer der zweite Buchtabe an den Anfang der nächsten Zeile gehängt?

Die Methode substring interessiert sich nur dafür, von wo bis wo du die Zeichen haben möchtest - dass es sich hier um den Anfang des Alphabets handelt, ist komplett egal.

Es sind ja immer 3 buchtaben ?

Vielleciht noch ein Tipp großes Grinsen
27.02.2015 20: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

code:
1:
"ABCDEF".substring(0,3)

liefert dir "ABC".
code:
1:
"ABCDEF".substring(1,4)

liefert "BCD".

Erkennst du ein Muster? Wie macht sich das Es sind ja immer 3 buchstaben bemerkbar?

__________________
Syntax Highlighting fürs Board (Link)
27.02.2015 20:26 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
javaneu
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

Man muss einfach die erste Zahl erhönen und die 2te auch oder ?

substring(0,3)
ABC

substring (1,3)

BCD

substring (2,5)

CDE

substring (3,6)

DEF


Aber das implementieren ist wieder eine andere Sache verwirrt
27.02.2015 20:46
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

Zitat:
Man muss einfach die erste Zahl erhönen und die 2te auch oder ?

richtig, deshalb auch substring (1,4).

Versuchen wir es doch mal mit einer Schleife:
code:
1:
2:
3:
for (int i = 0; i < s.length(); i++) {
    System.out.println(s.substring(i, i+3));
}

Das liefert schon mal ABC, BCD, CDE, DEF.
Wenn du das ausführst, wirst du 2 Dinge feststellen:
- es werden immer 3 Zeichen ausgegeben, egal, das du an die Funktion übergibst
- java.lang.StringIndexOutOfBoundsException: String index out of range: 7, das heißt, es wird versucht, auf einen Teil außerhalb des Strings zuzugreifen.

Korrekturvorschläge?

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 28.02.2015 06:06.

28.02.2015 06:05 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
javaneu
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

Soll ich das hier includieren oder wie ?
java.lang.StringIndexOutOfBoundsException: String index out of range: 7, das heißt, es wird versucht, auf einen Teil außerhalb des Strings zuzugreifen.


Woher weiss denn die Schleife genau das es bei DEF aufhört ?

Von dem s.length oder wie ?
28.02.2015 11:12
javaneu
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

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
public class Strings
{
   public static void substrings(String s, int len){
       
       
       if(len <1 || len >s.length() ){
           system.out.println(" Fehler: Keine Teilstrings ");
        
        }
        
        for (int i = 0; i < s.length(); i++) {
    System.out.println(s.substring(i, i+3));
}
    
    }
}


Mir wird jetzt nur ein Fehler angezeigt ,dass ein package fehlt.
28.02.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

Das weiß die Schleife genau dann, wenn du es ihr mitteilst.
i < s.length() geht schon zu weit, du musst früher abbrechen.

Wenn du zitieren willst, geht das mit [quote]Zitattext[/quote], dann weiß ich, dass ich den Teil nur überfliegen muss.

Und Fehlermeldungen bitte immer im genauen Wortlaut.

__________________
Syntax Highlighting fürs Board (Link)
28.02.2015 11:27 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
javaneu
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

i =< s.length(3,6) ?

Welches package muss ich includieren woher weiss ich das?

Alles Neuland für mich?
28.02.2015 11:34
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Java lernen 2