Erste und letzte 3 Buchst. eines Str. in jeweils ein Array

Status
Nicht offen für weitere Antworten.
D

DaMaxx

Gast
Hallo, habe folgendes Problem:

Ich will nach diesem Programmabschnitt

Code:
System.out.println();
			System.out.println("Die letzten drei Buchsatben der 5 Woerter sind:");
			System.out.println();
			System.out.println("1.Wort: "+wort[0].charAt(wort[0].length()-3)
							+wort[0].charAt(wort[0].length()-2)
							+wort[0].charAt(wort[0].length()-1));	
			erst[0] = 
													
							System.out.println();							
			System.out.println("2.Wort: "+wort[1].charAt(wort[1].length()-3)
							+wort[1].charAt(wort[1].length()-2)
							+wort[1].charAt(wort[1].length()-1));
							
							System.out.println();
			System.out.println("3.Wort: "+wort[2].charAt(wort[2].length()-3)
							+wort[2].charAt(wort[2].length()-2)
							+wort[2].charAt(wort[2].length()-1));
							
							System.out.println();
			System.out.println("4.Wort: "+wort[3].charAt(wort[3].length()-3)
							+wort[3].charAt(wort[3].length()-2)
							+wort[3].charAt(wort[3].length()-1));
							
							System.out.println();
			System.out.println("5.Wort: "+wort[4].charAt(wort[4].length()-3)
							+wort[4].charAt(wort[4].length()-2)
							+wort[4].charAt(wort[4].length()-1));
							
			
			System.out.println();				
			System.out.println("Die ersten drei Buchsatben der 5 Woerter sind:");
			System.out.println();
			System.out.println("1.Wort: "+wort[0].charAt(0)
							+wort[0].charAt(1)
							+wort[0].charAt(2));
							System.out.println();
			
			System.out.println("2.Wort: "+wort[1].charAt(0)
							+wort[1].charAt(1)
							+wort[1].charAt(2));
							
							System.out.println();
			System.out.println("3.Wort: "+wort[2].charAt(0)
							+wort[2].charAt(1)
							+wort[2].charAt(2));
							
							System.out.println();
			System.out.println("4.Wort: "+wort[3].charAt(0)
							+wort[3].charAt(1)
							+wort[3].charAt(2));
							
							System.out.println();
			System.out.println("5.Wort: "+wort[4].charAt(0)
							+wort[4].charAt(1)
							+wort[4].charAt(2));

die jeweils ersten und letzten drei buchstaben jeweils in ein array packen!
Also quasi so: Ich tippe Autobahn ein und er gibt "aut" und "ahn" aus und packt "aut" ins array "erst" und "ahn" ins array "letzt"
Wie stell ich das am besten an?
Danke schonmal für die Hilfe
 
B

bygones

Gast
ich würde mit substring arbeiten und nicht mit charAt...
also substring(0,3) bzw. substring(w.length-3, w.length());
 
G

Guest

Gast
So habs nun versucht...

Code:
System.out.println();
		System.out.println("Die letzten drei Buchsatben der 5 Woerter sind:");
		System.out.println();
		System.out.println("1.Wort: "+wort[0].charAt(wort[0].length()-3)
						+wort[0].charAt(wort[0].length()-2)
						+wort[0].charAt(wort[0].length()-1));
						erst[0] = wort[0].subString(wort[0],0,2);
bekomme aber immer diesen Fehler:

C:\Dokumente und Einstellungen\Max\Eigene Dateien\Schule\Test.java:73: cannot resolve symbol

symbol : method subString (java.lang.String,int,int)

location: class java.lang.String

erst[0] = wort[0].subString(wort[0],0,2);

^
 
G

Guest

Gast
Code:
import java.io.*;
 


class wortkette
	{
	public static void main (String args[]) 
		{
		try
			{
			Start();
			}
			catch (IOException e)
			{
			System.out.println("Da gabs wohl n I/O fehler!");	
			}	
		}

//Start
	public static void Start() throws IOException
		{
			String[] wort= new String[5];
			String[] erst= new String[5];
			String[] letzt= new String[5];
			String[] combo= new String[5];
			String[] combocombo= new String[5];
			
			BufferedReader bufinput = new BufferedReader 
			(new InputStreamReader(System.in));

			System.out.println("Klausurersatzleistung von Maximilian Schaefer");
			System.out.println();
			System.out.println(); 
						
			System.out.println("Tippe 5 Woerter ein!");
			System.out.println(); 
			
			System.out.println("1. Wort:");
			System.out.println();
				wort[0] = bufinput.readLine();
				wort[0] = wort[0].toLowerCase();
				System.out.println();  
				
				
			System.out.println("2. Wort:");
			System.out.println(); 
				wort[1] = bufinput.readLine();
				wort[1] = wort[1].toLowerCase();
				System.out.println(); 
			
			System.out.println("3. Wort:");
			System.out.println();                 
				wort[2] = bufinput.readLine();
				wort[2] = wort[2].toLowerCase();
				System.out.println(); 
			
			System.out.println("4. Wort:");
			System.out.println(); 
				wort[3] = bufinput.readLine();
				wort[3] = wort[3].toLowerCase();
				System.out.println(); 
			
			System.out.println("5. Wort:");
			System.out.println();                 
				wort[4] = bufinput.readLine();
				wort[4] = wort[4].toLowerCase();
				System.out.println(); 			
			
		System.out.println(); 
         System.out.println("Die letzten drei Buchsatben der 5 Woerter sind:"); 
         System.out.println(); 
         System.out.println("1.Wort: "+wort[0].charAt(wort[0].length()-3) 
                     +wort[0].charAt(wort[0].length()-2) 
                     +wort[0].charAt(wort[0].length()-1));    
         letzt[0] = wort[0].substring(wort[0].length()-3, wort[0].length());
                
                                        
                     System.out.println();                      
         System.out.println("2.Wort: "+wort[1].charAt(wort[1].length()-3) 
                     +wort[1].charAt(wort[1].length()-2) 
                     +wort[1].charAt(wort[1].length()-1));
         letzt[1] = wort[1].substring(wort[1].length()-3, wort[1].length());
                      
                      
                     System.out.println(); 
         System.out.println("3.Wort: "+wort[2].charAt(wort[2].length()-3) 
                     +wort[2].charAt(wort[2].length()-2) 
                     +wort[2].charAt(wort[2].length()-1)); 
         letzt[2] = wort[2].substring(wort[2].length()-3, wort[2].length());
         
                       
                     System.out.println(); 
         System.out.println("4.Wort: "+wort[3].charAt(wort[3].length()-3) 
                     +wort[3].charAt(wort[3].length()-2) 
                     +wort[3].charAt(wort[3].length()-1)); 
         letzt[3] = wort[3].substring(wort[3].length()-3, wort[3].length());
         
                      
                     System.out.println(); 
         System.out.println("5.Wort: "+wort[4].charAt(wort[4].length()-3) 
                     +wort[4].charAt(wort[4].length()-2) 
                     +wort[4].charAt(wort[4].length()-1)); 
         letzt[4] = wort[4].substring(wort[4].length()-3, wort[4].length());
                      
          
         System.out.println();             
         System.out.println("Die ersten drei Buchsatben der 5 Woerter sind:"); 
         System.out.println(); 
         System.out.println("1.Wort: "+wort[0].charAt(0) 
                     +wort[0].charAt(1) 
                     +wort[0].charAt(2)); 
                     System.out.println(); 
         erst[0] = wort[0].substring(0, 3);
         
          
         System.out.println("2.Wort: "+wort[1].charAt(0) 
                     +wort[1].charAt(1) 
                     +wort[1].charAt(2)); 
         erst[1] = wort[1].substring(0, 3);
         
                      
                     System.out.println(); 
         System.out.println("3.Wort: "+wort[2].charAt(0) 
                     +wort[2].charAt(1) 
                     +wort[2].charAt(2));
         erst[2] = wort[2].substring(0, 3);            
                    
                      
                     System.out.println(); 
         System.out.println("4.Wort: "+wort[3].charAt(0) 
                     +wort[3].charAt(1) 
                     +wort[3].charAt(2));
         erst[3] = wort[3].substring(0, 3);           
                      
                      
                     System.out.println(); 
         System.out.println("5.Wort: "+wort[4].charAt(0) 
                     +wort[4].charAt(1) 
                     +wort[4].charAt(2));
         erst[4] = wort[4].substring(0, 3); 	
	
int i;
for (i=0; i<5; i=i+1)
{
if (erst[0].equals(letzt[i]))
	{
		combo[0] = wort[i]+wort[0].substring(3,wort[0].length());
	}

else if (erst[1].equals(letzt[i]))
	{
		combo[1] = wort[i]+wort[1].substring(3,wort[0].length());
	}

else if (erst[2].equals(letzt[i]))
	{
		combo[2] = wort[i]+wort[2].substring(3,wort[0].length());
	}

else if (erst[3].equals(letzt[i]))
	{
		combo[3] = wort[i]+wort[3].substring(3,wort[0].length());
	}

else if (erst[4].equals(letzt[i]))
	{
		combo[4] = wort[i]+wort[4].substring(3,wort[0].length());
	}

}
	
int j;
for (j=0; j<5; j=j++)
{

if (combo[0].substring(0, 3).equals(combo[j].substring(combo[j].length()-3, combo[j].length())))
	{	
		combocombo[0] = combo[j]+combo[0].substring(3,combo[0].length());
	}

else if (combo[1].substring(0, 3).equals(combo[j].substring(combo[j].length()-3, combo[j].length())))
	{	
		combocombo[1] = combo[j]+combo[1].substring(3,combo[1].length());
	}

else if (combo[2].substring(0, 3).equals(combo[j].substring(combo[j].length()-3, combo[j].length())))
	{	
		combocombo[2] = combo[j]+combo[2].substring(3,combo[2].length());
	}

else if (combo[3].substring(0, 3).equals(combo[j].substring(combo[j].length()-3, combo[j].length())))
	{	
		combocombo[3] = combo[j]+combo[3].substring(3,combo[3].length());
	}
	
else if (combo[4].substring(0, 3).equals(combo[j].substring(combo[j].length()-3, combo[j].length())))
	{	
		combocombo[4] = combo[j]+combo[4].substring(3,combo[4].length());
	}
	
}


int k;
for (k=0; k<4; k=k+1)
{
System.out.println(combo[0]+combo[k]);
}	

	}
}

So, nun wirds knifflig! Ich will aus den eingegebenen Wörtern Wortketten bilden, wobei jedes Wort in einer wortkette nur einmal auftreten darf! Zudem suche ich nach einer Lösung, die längste mögliche Wortkette zu finden!

Nemen wir an ich habe die wörter: wettbewerb, erbringen, erbaut und genanalyse, dann könnte man

wettbewerbringenanalyseerbaut oder wettbewerbauterbringenanalyse bilden wobei letzteres um 1 länger ist als ersteres! Ich verzweifel schon mit diesem schei*!

Gruß
 
G

Guest

Gast
kann mir denn niemand helfen?
Bitte bitte, ich muss das heute noch fertig krigen ^^.

Vielen dank nochmal im vorraus!
 
T

TheMaxx32000

Gast
Is quasi nicht mehr wichtig, aber interessieren würds mich trotzdem sehr, da ich mir echt den Kopf zerbrochen habe! ;-) Also: Immer her mit Ansätzen, Lösungen und Vorschlägen!

Gruß - Max
 

mic_checker

Top Contributor
Hi,
erstmal kommt es auf die exakte Aufgabenstellung an.

Ist es gefordert das in der neuen Zeichenkette ein "fließender" Übergang stattfindet, wie bei:

wettbewerbringenanalyseerbaut

Ansonsten könnte man am Anfang ja immer schauen ob man die vier gegebenen Zeichenketten möglichst direkt verketten könnte:

erbautgenanalysewettbewerbringen

Also ich hab ne Lösung für die erste Möglichkeit , sprich :
Zeichenketten übergehen "fließend" ineinander.
Bei Interesse kann ich was posten.

Mich würd erstma interessieren ob das gefordert ist oder nicht.
 
T

TheMaxx32000

Gast
Ein fließender übergang ist erwünscht, wenn möglich, da aber bei 5 eingegebenen Wörtern nicht gesagt ist, das dies möglich ist, muss es nicht sein.

Ich muss halt gucken das wenn ich zwei Endungen habe die auf einen Anfang passen, das ich mich für die Version entscheide die das längere Wort bildet und die restlichen Wörter (in diesem Beispiel 3) hänge ich einfach hinten an, da sie sich nicht kombinieren lassen.

Bin dankbar für jeden Code-Schnipsel der mich weiterbringt!

Gruß - Max
 

mic_checker

Top Contributor
Also ich habe meine Lösung bisher daraufhin entwickelt, dass ein fließender Übergang erfolgen muss. Aber das kannst du sicher noch umändern.

Zu allererst habe ich eine Verkette Liste (ArrayList) verwendet und die zu verwendenden Strings hinzugefügt, also "wettbewerb"....so dass die Liste anfangs nur diese Strings enthalten hat.

Nun hab ich angefangen die Liste von vorne nach hinten durchzugehen u. habe mit "wettbewerb" angefangen.
Als nächstes holt man sich das nächste Element der Liste z.B. "erbringen".

Was wird jetzt getan?

Ich schaue ob "erbringen" mit "b" anfängt..dann ob es mit "rb" anfängt .... bis ich bei "erb" bin.
Dadurch erzeuge ich einen neuen String: wettbewerbringen.

Das ganze ist nicht ganz so leicht zu erklären, deshalb will ich an dieser Stelle ausnahmsweise ganzen Code posten.
Wie gesagt, unter der Einschränkung das ein fließender Übergang stattfindet.
Aber wie heissts so schön : Angaben ,bzw. Code ohne Gewähr ;)

Code:
import java.util.*;

class Zeichenkette
{
	public static void main (String args[])
   {
      String[] a = {"wettbewerb","erbringen","erbaut","genanalyse"};
		String sub,newstr;
		ArrayList al = new ArrayList();
		int max = a[0].length(),size = a.length,index = 0,start = 0;	
		
		for(int i = 0;i < a.length;i++)
			al.add(a[i]);	
			
		for(int z = 0;z < a.length;z++,size = al.size())
		{					
			for(int b = start;b < size;b++)
			{					
				newstr = String.valueOf(al.get(b));
				
				for(int i = newstr.length() - 1;i >= 0;i--)
				{
					sub = newstr.substring(i,newstr.length());

					for(int c = 1;c < a.length;c++)		
						if((index = newstr.indexOf(a[c])) == -1)
							if(a[c].startsWith(sub))				
								al.add(newstr.substring(0,i) + a[c]);				
				}				
			}
			start = size;
		}
		index = 0;

		for(int b = 1;b < al.size();b++)
		{
			newstr = String.valueOf(al.get(b));				
			if(newstr.length() > max)
			{
				index = b;
				max = newstr.length();
			}			
		}			
		System.out.println("Längste zusammengesetzte Zeichenkette: "+al.get(index));		
	} 
}

Im Beispiel bin ich der Einfachheit halber von den gegebenen Strings ausgegangen. Vielleicht hilfts dir weiter...
 
T

TheMaxx32000

Gast
Sehr schöne Überlegung! Ich hatte es mir, denke ich, etwas zu kompliziert gemacht! Ich habs mal nachvollzogen und ausprobiert und muss sagen das dieser Ansatz nicht nur besser sondern auch um längen kompakter ist =)

Vielen Dank für deine Hilfe - Max
 

mic_checker

Top Contributor
ich hatte anfangs auch einen wesentlich komplizierteren Ansatz. Das ging soweit das ich mein Java zu ner OutOfMemory gebracht hab ;)

Weiss nicht genau ob ich in nächsten Tagen dazu komm das Prog umzuschreiben, ansonsten kannst ja mal deine Lösung posten - also wo kein fließender Übergang erfolgen muss...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Klassen Bestimmen Sie die erste und letzte Position an der ein 'c' steht? Java Basics - Anfänger-Themen 3
I String abschneiden erste und letzte Zeichen Java Basics - Anfänger-Themen 3
J Erste und letzte Zeile in txt Java Basics - Anfänger-Themen 3
MarvinsDepression Datentypen Generics: Erste Berührungen Java Basics - Anfänger-Themen 6
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
F nur das erste Element mit iterator ausgeben Java Basics - Anfänger-Themen 5
J Objekt erste freie Stelle zuweisen Java Basics - Anfänger-Themen 3
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
Textsurfer Erste Schritte Ist es der erste Schleifendurchlauf? Java Basics - Anfänger-Themen 4
V Erste Schritte Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule Java Basics - Anfänger-Themen 9
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
C Erste Ziffer einer Zahl Java Basics - Anfänger-Themen 46
L Erste Schritte Erste Versuche mit Server und Client Java Basics - Anfänger-Themen 7
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
B Kreuzprodukt zweier Vektoren (Erste Java Aufgabe - Hilfestellungen und Tips erwünscht) Java Basics - Anfänger-Themen 4
Tarrew Generics: Erste gemeinse Oberklasse als Rückgabewert Java Basics - Anfänger-Themen 1
N InsertionSort sortiert erste Zahl im Array nicht mit? Java Basics - Anfänger-Themen 6
U Wie bekomme ich bei der Ausgabe das erste Komma weg Java Basics - Anfänger-Themen 8
S Erste App Java Basics - Anfänger-Themen 2
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
Farbenfroh Erste GUI Versuche Java Basics - Anfänger-Themen 1
R Java als erste Programmiersprache 5 Auflage Java Basics - Anfänger-Themen 0
N Erste Zeile bei BufferedReader doppelt lesen? Java Basics - Anfänger-Themen 2
L Das erste Mal GridBagLayout - wie geht das? Java Basics - Anfänger-Themen 5
O Erste Versuche eine Art "EventHandler" zu bauen.. Java Basics - Anfänger-Themen 8
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
E nur der erste (mehrerer Strings) wird ausgegeben Java Basics - Anfänger-Themen 15
C Meine erste Funktion Java Basics - Anfänger-Themen 12
O erste Loggingversuche Java Basics - Anfänger-Themen 12
A Meine erste Bibliothek erstellen Java Basics - Anfänger-Themen 24
A Mit javac zweite Datei compilieren ohne Erste erneut zu compilieren? Java Basics - Anfänger-Themen 7
P HILFE !!! erste aufgabe beim programmieren Java Basics - Anfänger-Themen 13
T Erste Programm Java Basics - Anfänger-Themen 9
T Das erste Programm starten Java Basics - Anfänger-Themen 27
L Erste Klasse Java Basics - Anfänger-Themen 12
P Textdatei auf erste Zeichenkette Prüfen... Java Basics - Anfänger-Themen 10
R Erste und zweite Stelle einer Eingabe auslesen Java Basics - Anfänger-Themen 2
M Meine erste Java Programmierung funzt nicht :-( Java Basics - Anfänger-Themen 34
U Erste Ziffer abspalten Java Basics - Anfänger-Themen 3
J Erste OO-Aufgabe-Probleme mit Aufgabenstellung Java Basics - Anfänger-Themen 32
J Erste Gehvesuche Java Basics - Anfänger-Themen 3
C Erste GUI - Wie auswerten? Java Basics - Anfänger-Themen 3
B Das erste Programm . Java Basics - Anfänger-Themen 4
R Meine erste Klasse: Punkt Java Basics - Anfänger-Themen 3
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
G erste Schritte in Fenster und Grafik-Programmierung Java Basics - Anfänger-Themen 2
L JTabel abfragen ob es eine erste Zeile gibt? Java Basics - Anfänger-Themen 2
Q An erste Stelle in eine Queue eintragen Java Basics - Anfänger-Themen 4
C Generische Klassen, das erste Mal. Java Basics - Anfänger-Themen 8
J Neuling und erste Fragen Java Basics - Anfänger-Themen 8
R Erste Schritte,erste Class,Korrekturlesen und Verbesserungen Java Basics - Anfänger-Themen 3
T Erste Schritte (SEHR mühsam); Grafiktest Java Basics - Anfänger-Themen 5
D String, erste zeichen löschen Java Basics - Anfänger-Themen 6
J Threads: warten bis erste aktion ausgeführt wurde Java Basics - Anfänger-Themen 6
V Erste Ziffer aus einer dreistelligen "Zahl" heraus Java Basics - Anfänger-Themen 5
G Meine erste IF Abfrage Java Basics - Anfänger-Themen 11
A erste Schritte auf dem Weg eine XML-Datei zu parsen Java Basics - Anfänger-Themen 2
F Erste Schritte in Java - Wo finde ich Antworten? Referenzbib Java Basics - Anfänger-Themen 3
H Nur die erste Zeile einer Datei auslesen Java Basics - Anfänger-Themen 3
E Erste Schritte - warum läuft nur das eine? Java Basics - Anfänger-Themen 2
R Nur erste Zeile wird ausgelesen Java Basics - Anfänger-Themen 4
K Wortanzahl in erste Zeile schreiben Java Basics - Anfänger-Themen 6
W warum öffnet der nur die erste datei???? Java Basics - Anfänger-Themen 5
D erste spalte eines zweidimensionales Array sortieren ??!! Java Basics - Anfänger-Themen 2
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
K Apache POI Excel Letzte Reihe einer bestimmten Spalte Java Basics - Anfänger-Themen 1
thobren arraylist es wird nur der letzte Eintrag angezeigt Java Basics - Anfänger-Themen 2
L Schleifen und Array, nur letzte Eingabe wird ausgegeben Java Basics - Anfänger-Themen 3
P letzte Datei finden Java Basics - Anfänger-Themen 18
S Textdatei lesen, Methode gibt nur die letzte Zeile aus. Warum? Java Basics - Anfänger-Themen 5
J ArrayList nimmt ständig nur das letzte Objekt auf Java Basics - Anfänger-Themen 2
W letzte Zeile aus wachsender Textdatei auslesen Java Basics - Anfänger-Themen 5
J Variablen Letzte berechnete variable am anfang Ausgeben ? Java Basics - Anfänger-Themen 4
H Zeiger auf das letzte Element in einer linearen Liste Java Basics - Anfänger-Themen 4
T ArrayList immer die letzte Zeile Java Basics - Anfänger-Themen 2
N Die letzte Zeile generiert einen Fehler! Könnt ihr mir helfe Java Basics - Anfänger-Themen 2
M Letzte Zeille einer Datei verarbeiten Java Basics - Anfänger-Themen 3
G wie erfragt man die letzte ID in einer MySQL Datenbank ab? Java Basics - Anfänger-Themen 3
G TreeMap vom 1. bis letzte eintrag durchgehen Java Basics - Anfänger-Themen 17
D Random Access File: Letzte Zeile löschen Java Basics - Anfänger-Themen 2
S Java zeigt immer nur das letzte Objekt der Liste Java Basics - Anfänger-Themen 4
C letzte Zeilen eines Files auslesen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben