länge von wörtern betimmen

Status
Nicht offen für weitere Antworten.

mojito

Mitglied
hallo @ all

bin seit heute neu hier und hab auch glaich mal ne schöne anfänger-frage an euch. :bahnhof:

ich möchte ein kleines proggi schreiben, welches mir die anzahl der buchstaben der von mir eingegeben wörter mit einem "*" ausgibt. ausserdem soll sollen die wie ein histogramm pro wort untereinander ausgegeben werden.

als ungefair so:

dies ist 1 satz

*__*__*__*
*__*_____*
*__*_____*
*________*

^^die unterstriche dienen hier jetzt nur als platzhalter

ganz faul war ich auch nicht - aber ich komm' einfach nicht mehr weiter ???:L
ausserdem wird das programm durch eine exception unterbrochen
hier mein code:

Code:
public static void main(String[] args) {
		
		String Abfrage = "j";
				
		do
		{
			String[] Satz = new String[1];
			System.out.println("Gib was ein:");
			Satz[0] = Tools.stringEingabe();
			int laenge = Satz[0].length();
			char[] buchstabe = new char[laenge];
			
			for(int i=1; i<=Satz[0].length(); i++)
			{
				System.out.println(buchstabe[i] = '*');
				
			}
			
		
			System.out.println("Weiter? j/n");
			Abfrage = Tools.stringEingabe();
		}
		while(Abfrage.equals("j"));
	}

- die klasse "Tools" ist nur eine sammlung der einzelnen Eingabe-Methoden -

wäre echt nett wenn mir jemand von euch einen tipp geben könnte, damit ich weiter komme

DANKE schon mal

gruß
mojito
 

Murray

Top Contributor
Array-Indizes sind 0-basiert; eine Iteration sollte also so aussehen:
Code:
 for ( int i=0; i<array.length; i++) { //--- i geht von 0 bis array.length-1
   whatever( array[i]);
}

Du lässt den Index von 1 bis einschließlich der Array-Länge laufen, wodurch a) das erste Element überlesen wird und b) beim Zugriff mit dem Index Array-Länge über das Ende hinaus gelesen wird, was eine ArrayIndexOutOfBoundsException auslöst.
 

mojito

Mitglied
cool das mit der exception hat sich erledigt - war auch wirklich nen blöder fehler.... :roll:

aber wie mache ich das für mehrere wörter hintereinander? ???:L
 

mojito

Mitglied
hmmm...

ich weiss einfach nicht, wie ich immer erst die jeweils ersten stellen der wörter erfassen kann, um dann wie im beispiel beschrieben der einzelnen stellen untereinander als "*" wiedergeben kann...

wäre wirklich fantastisch wenn mir da noch mal jmd nen tipp geben könnte...

gruß
mojito
 
R

Ro252

Gast
kann sein dass du student bist und du das als übung bekommen hast?

Diese Aufgabe ist mir bekannt. Allerdings das mit den Sternen --untereinander-- darstellen ist schon "komplizierter", weil man da schon ein logisches denken für Schleifen und If-Bedingungen haben muss, was man als Programmieranfänger noch nicht so im Blut hat. Ich hab dieses Beispiel auch noch nicht geschafft, da ich mit der vertikalen Darstellung immer durcheinander komme. Sobald ich eine Lösung dafür habe, werde ich diese hier posten, werde es diese woche noch machen!
 

dieta

Top Contributor
Ich will dir hier keine Komplettlösung geben, aber so als kleiner Tipp:
Den String kannst du mit derString.split(" "); (<-- Da ist ein Leerzeichen zwischen den Anführungszeichen) in einzelne Wörter aufteilen.
Zurück bekommst du ein String-Array mit den einzelnen Wörtern ohne Leerzeichen.
Dann kannst du noch die Länge der einzelnen Strings als int-Array speichern. Und dann überleg' mal, wie du das horizontal darstellen würdest. Und überleg' dir dann mal, wie man das wohl "umdrehen" könnte.
 

mojito

Mitglied
SUPER :D ...DANKE dieta...- genau das was ich suchte...ne komplett-loesung wollt ich ja gar nicht haben. --> nugut gewehrt hätte ich mich auch nicht :oops:

werd's gleich mal einhacken....wenn's funzt (/oder auch nicht) dann sag ich bescheid
 

mojito

Mitglied
???:L hmm - ich komme mal wieder nicht weiter...

habe das
Code:
Satz[0].split(" ");
hineingezaubert und danach die länge des Strings anzeigen lassen, aber es hat immer noch die selbe länge - ausserdem kommt dann wieder die selbe ArrayIndexOutOfBoundsException die ich vorher hatte.

ich habe auch keine ahnung welche neuen Strings mir dann zurückgegeben werden... :cry:

@ dieta und alle anderen die sich vielleicht hiermit noch beschäftigen...: gebt mir bitte noch einen weiterne kleinen tipp.

"BITTE BITTE mit ganz viel Zuckerguß opben drauf" :?

Gruß
Mojito
 

dieta

Top Contributor
Das Problem ist, dass du in der For-Schleife bei 1 anfängst zu zählen, der erste index eines Arrays ist in Java aber immer 0. So müsste deine Schleife richtig aussehen:
Code:
for(int i=0; i<Satz[0].length(); i++)
Der Letzte Index eines Arrays ist immer die Länge - 1.
Als Beispiel:
Code:
0 bla
1 blubb
2 irgendwas
Die Länge ist 3, aber da die Numemrierung der Indizies bei 0 beginnt, ist der Letzte Index 3 - 1, also 2.
[edit]Und wenn ich deinen Post richtig verstehe:
Du musst das Ergebnis von Satz[0].split ja auch irgendwo speichern:
Code:
String[] s = Satz[0].split(" ");
Und jetzt noch 2 Sachen:
1. Warum speicherst du die Eingabe nicht in einer normalen Variable, sondern in einem Array?
und 2. schreibt man Variablennamen normalerweise klein.
[/edit]
 
R

Ro252

Gast
hi, ich würde besser


Code:
String[] einzelneWoerter = satz.split("\\s");


benutzen, dann hast du am schnellsten gelöst. Der eingegebene Satz (variable satz) wird aufgesplittet und ins das Array "einzelneWoerter" gespeichert.
 

mojito

Mitglied
Ich schon wieder ... ;)

also ich bin jetzt so weit:
Code:
public static void main(String[] args) {
				
		String Abfrage = "j";
				
		do
		{
			
			System.out.println("Gib was ein:");
			String satz = Tools.stringEingabe(); 
			String[] einzelWort = satz.split("\\s");
			
			for(int a=0; a<=50; a++)
			{
				int laenge = einzelWort[a].length();
				char[] buchstabe = new char[laenge];
				
				for(int i=0; i<einzelWort[a].length(); i++)
				{
					System.out.print(buchstabe[i] = '*');
				}
				System.out.print("\n\n");
			}

			System.out.println("Weiter? j/n");
			Abfrage = Tools.stringEingabe();
		}
		while(Abfrage.equals("j"));
		

	}

nun habe ich aber wieder diese exception, die ich eigentlich behoben hab - meine for-Schleifen beiginnen alle mit "0". (war auch wirklich n dummer fehler.) :oops:

nun werden meine wörter aber horizontal ausgegeben...
da hab ich gleich noch eine frage, gibt es eine möglichkeit, das ich erst immer den ersten "buchstaben" der arrays erfassen kann - diese dann horizontal ausgebe - nach dem zeilenumbruch dann die jeweils zweiten buchstaben usw...

...oder denke ich da jetzt zu kompliziert?

DANKE erstmal an dieta & ro252

gruß
mojito
 

Tobias

Top Contributor
Code:
char[] buchstabe = new char[laenge];
            
for(int i=0; i<einzelWort[a].length(); i++) {
      System.out.print(buchstabe[i] = '*');
}
System.out.print("\n\n");

dieser Code-Abschnitt ist völlig obskur, weil wozu brauchst du dieses Array überhaupt? Folgender Abschnitt tut's genauso:

Code:
for(int i=0; i<einzelWort[a].length(); i++) {
      System.out.print('*');
}
System.out.print("\n\n");

mpG
Tobias

P.S.: Wg Exception: Sag mal wo die Exception auftritt - die Zeilenangabe bitte auf "Forumszeilen" konvertieren![/code]
 

Tobias

Top Contributor
Code:
a<=50

Kann ja nur klappen, wenn mindestens 51 Wörter eingegeben wurde...

mpG
Tobias
 
R

Ro252

Gast
also wenn du "a<=50" hast, dann ist klar das ein fehler kommt, denn wenn du z.b. ein Satz mit 3 Wörtern schreibst, dann wird beim array 0,1 und 2 gefüllt, woher soll er sich 3...50 herholen?
 

mojito

Mitglied
:shock: na klar....ihr habt recht!!

hab den fehler nun behoben, indem ich natürlich nur die länge des array "einzelWort" dort einfüge...

da hab ich mal wieder nicht richtig nachgedacht!

hat schon jmd ne idee für die senkrechte darstellung?
 

Tobias

Top Contributor
Horizontale Darstellung: Äußere Schleife iteriert über den Gesamtsatz, innere Schleife über die Buchstaben des Einzelwortes.

Vertikale Darstellung: Äußere Schleife iteriert über die Buchstaben der Worte, innere Schleife über den Gesamtsatz. ACHTUNG: IndexOutOfBoundsException wenn nicht alle Wörter gleich lang sind. Wie man das abfängt, weißt du ja mittlerweile... length() und so.

Hoffe das reicht als Denkanstoß.
Tobias
 

mojito

Mitglied
Hallo noch mal...

vielleicht könntet ihr mir mal noch einen kleinen zusätzlich tipp geben...?? :cry:

ich komm einfach nicht weiter - horizontal funktioniert einwandfrei - aber vertikal krieg' ich das nicht hin!

wäre nett, wenn sich noch mal jemand von euch erbarmen würde, mir einen tipp zu geben.

danke nochmals @ all

bis denne
mojito
 

dieta

Top Contributor
Wenn du die einzelnen Buchstaben der Ausgabe in einem zweidimensionalem Array speicherst, und dieses dann mit zwei for-Schleifen ausgifst, musst du für die vertikale Darstellung nur die Koordinaten vertauschen, also statt
Code:
System.out.print(array[x][y]);
das schreiben:
Code:
System.out.print(array[y][x]);
 

mojito

Mitglied
ich war doch wirklich zu blind!! :autsch:

jetzt klappt alles so wie es soll!

auch wenn's bestimmt keine mehr bracht hier der komplette code:

Code:
public static void main(String[] args) {
				
		String Abfrage = "j";
				
		do
		{
			
			System.out.println("Gib was ein:");
			String satz = Tools.stringEingabe(); 
			String[] einzelWort = satz.split("\\s");
		    int [] laenge = new int [einzelWort.length];
	    	int [] laengesortiert = new int [einzelWort.length];
		    
	    	System.out.println("unsortiert:");
	    	for (int a = 0; a < einzelWort.length; a++ ){
		    	
		    	laenge[a] = einzelWort[a].length();
		    	laengesortiert[a] = einzelWort[a].length();
		    	System.out.print(laenge[a] + " ");
		    }
		    System.out.print("\n");
		    System.out.println ("sortiert:");
		    Arrays.sort(laengesortiert);
		    for (int b = 0; b < einzelWort.length; b++ ){
		    	
	    	   	System.out.print(laengesortiert[b] + " ");
		    }
		    System.out.print("\n" + "Anzahl der Speicherplaetze im Array: ");
		    System.out.println (einzelWort.length);
		    System.out.print ("Maximaler Wert im Array: " + laengesortiert[einzelWort.length-1]);
		    System.out.print("\n");
		    System.out.print(satz+"\n");
		    for (int d = 0; d < laengesortiert[einzelWort.length-1]; d++){
		    	for (int e = 0; e < einzelWort.length; e++){
		    		if (laenge[e] > 0){
		    			System.out.print("*");
		    			laenge[e]--;
		    			}
		    		else{
		    			System.out.print(" ");
		    		}
		    		for(int a=0; a<einzelWort[e].length(); a++)
		    		{
		    			System.out.print(" ");
		    		}
		    	}
		    	System.out.print("\n");
		    }
			System.out.println("Weiter? j/n");
			Abfrage = Tools.stringEingabe();
		}
		while(Abfrage.equals("j"));

	}

trotzdem einen großen DANK an alle - alleine hätt ich's nie geschafft!!!

FROHE WEIHNACHTEN & NEN GUTEN RUTSCH INS NEUE JAHR!!!!

euer
Mojito
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
S Die durchschnittliche Länge der Strings Java Basics - Anfänger-Themen 11
Hzrfa Länge der längsten Kette java Java Basics - Anfänger-Themen 56
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
JavaBeginner22 Wort mit der größten Länge ausgeben Java Basics - Anfänger-Themen 4
I Array Länge in Klasse festlegen Java Basics - Anfänger-Themen 1
Csircc Neuer Array mit geringerer Länge und selben werten. Java Basics - Anfänger-Themen 2
P Länge des längsten möglichst klein Java Basics - Anfänger-Themen 2
districon 2D Array - Länge zuweisen Java Basics - Anfänger-Themen 1
t2im Java Array-Länge ändern? Java Basics - Anfänger-Themen 22
W Best Practice Tabulatoren verschiedener Länge ersetzen Java Basics - Anfänger-Themen 8
H Klassen Die Länge einer Text-Node bestimmen Java Basics - Anfänger-Themen 2
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
L Zwei sortierte Subarrays mit gleicher Länge zusammenfügen Java Basics - Anfänger-Themen 2
A Arrays kombinieren (länge eines Arrays kann 0 sein) Java Basics - Anfänger-Themen 6
S Java Array Länge aus anderer Klasse lesen Java Basics - Anfänger-Themen 1
O Länge eines Arrays Java Basics - Anfänger-Themen 6
M Die länge von char Java Basics - Anfänger-Themen 6
A Best Practice Undefinierte länge bei arrays Java Basics - Anfänger-Themen 4
E Array-list mit einer bestimmten Länge Java Basics - Anfänger-Themen 17
F Maximale Länge eines Strings Java Basics - Anfänger-Themen 5
L Länge der dritten Dimension eines dreidimensionalen Arraya Java Basics - Anfänger-Themen 1
T Länge einer Textdatei Java Basics - Anfänger-Themen 11
C Array - Länge dynamisch übergeben Java Basics - Anfänger-Themen 7
N Array mit unbestimmter länge Java Basics - Anfänger-Themen 12
T String länge messen in mm Java Basics - Anfänger-Themen 1
M Generierter Tannenbaum - String Länge Java Basics - Anfänger-Themen 1
T String/int länge Java Basics - Anfänger-Themen 2
I Länge von mehrdimensionalen Array Java Basics - Anfänger-Themen 5
A Länge Substring Java Basics - Anfänger-Themen 1
D Zweidimensionales Array (Länge) Java Basics - Anfänger-Themen 2
S Listnode Länge Java Basics - Anfänger-Themen 2
shiroX Input/Output Array erstellen / Länge Java Basics - Anfänger-Themen 3
Z Erste Schritte Einlesen der Länge eines Feldes Java Basics - Anfänger-Themen 25
G Erste Schritte berechne länge von einträgen Java Basics - Anfänger-Themen 5
S Länge einer Zahl Java Basics - Anfänger-Themen 18
C Datentypen Array-Einträge überhalb der Array-Länge - welcher Wert? Java Basics - Anfänger-Themen 5
M Strings mit variabler Länge auffüllen Java Basics - Anfänger-Themen 6
J Alle Wörter der Länge n mit 0 und 1 Java Basics - Anfänger-Themen 17
S Länge eines Elements im String Array Java Basics - Anfänger-Themen 5
C Datentypen Array mit dynamischer Länge? Java Basics - Anfänger-Themen 14
M Länge der Strecke zwischen zwei Punkten Java Basics - Anfänger-Themen 10
P länge von array abfragen? Java Basics - Anfänger-Themen 2
D Erste Schritte Warum wird bei einem Array die Länge über Length ausgegeben? Java Basics - Anfänger-Themen 6
S Länge eines zweidimensionalen Feldes Java Basics - Anfänger-Themen 3
M Länge String Java Basics - Anfänger-Themen 3
A Länge einer Hexadezimalzahl in Bits Java Basics - Anfänger-Themen 40
P String- Länge Java Basics - Anfänger-Themen 3
A Klassen Eigene Datenklasse - Strings mit fixer Länge Java Basics - Anfänger-Themen 2
E Länge eines spez. Arrays Java Basics - Anfänger-Themen 10
E Länge eines Feldes ausgeben Java Basics - Anfänger-Themen 13
Gossi Datentypen Länge von Zahlentypen Java Basics - Anfänger-Themen 3
V Warten bis die Länge eines Strings nicht mehr 0 ist Java Basics - Anfänger-Themen 13
G Array mit zufälliger Länge Java Basics - Anfänger-Themen 4
D prüfen ob länge eines Arrays == 0 Java Basics - Anfänger-Themen 4
S Datentypen String mit fester Länge (Rückgabewert einer Methode) Java Basics - Anfänger-Themen 2
D Array anlegen ohne bekannte Länge? Java Basics - Anfänger-Themen 6
B Maximale Länge eines integer Arrays ? Java Basics - Anfänger-Themen 31
J Länge eines long wertes Java Basics - Anfänger-Themen 13
S ArrayList länge lässt sich nicht voreinstellen Java Basics - Anfänger-Themen 10
F String begrenzte Länge??? Java Basics - Anfänger-Themen 16
N List länge Java Basics - Anfänger-Themen 6
DStrohma Binärwörter der Länge n ausgeben Java Basics - Anfänger-Themen 3
G Länge eines Integers ermitteln? Java Basics - Anfänger-Themen 38
A array und seine länge Java Basics - Anfänger-Themen 5
G länge von string, string aus integer/char Java Basics - Anfänger-Themen 6
G Länge einer Enumeration feststellen Java Basics - Anfänger-Themen 15
T Länge von Strings im Array vergleichen Java Basics - Anfänger-Themen 2
N Array bei unbekannter Länge Java Basics - Anfänger-Themen 4
M unerklärbarer Fehler bei Array-Länge Java Basics - Anfänger-Themen 4
R Frage zur Länge von Textfeld und String Java Basics - Anfänger-Themen 4
G Warum hat char die Länge 2? Java Basics - Anfänger-Themen 9
G Länge eines Array trimmen oder dynamisch verändern. Java Basics - Anfänger-Themen 3
B JTable - Einstellen der Größe bzw. der Länge Java Basics - Anfänger-Themen 1
J Char-Array mit variabler Länge zurückliefern. Java Basics - Anfänger-Themen 11
G Keine feste Länge bei Objekten, warum nur Zeiger? Java Basics - Anfänger-Themen 8
F ArrayList Länge ermitteln und ausgeben Java Basics - Anfänger-Themen 13
NightmareVirus Länge einer Integerzahl bestimmt Java Basics - Anfänger-Themen 6
B 2D Punkte erstellen und ihre Länge berechnen/Problem this. Java Basics - Anfänger-Themen 3
L String konstante Länge? Java Basics - Anfänger-Themen 4
R maximale Länge des INHALTS im JTextField Java Basics - Anfänger-Themen 2
R String[][] mit variabler länge Java Basics - Anfänger-Themen 4
G länge einer audiodatei herausfinden Java Basics - Anfänger-Themen 3
B Länge eines Char-Arrays bestimmen Java Basics - Anfänger-Themen 7
M Maximale String länge finden? Java Basics - Anfänger-Themen 8
B Länge eines JTextFields Java Basics - Anfänger-Themen 3
G Array-Länge bei Erzeugung noch unbekannt - wie erzeugen? Java Basics - Anfänger-Themen 12
J Arrays mit unbekannter Länge Java Basics - Anfänger-Themen 2
B String aus Datei lesen + Länge berechnen Java Basics - Anfänger-Themen 2
G Länge eines zweidimensionalen array Java Basics - Anfänger-Themen 2
N Ermitteln der Spaltenbreite => DATE-Spalte hat Länge 8 ?! Java Basics - Anfänger-Themen 10
G Felder-Länge Java Basics - Anfänger-Themen 2
G Char oder Byte Array mit unbekannter länge erstellen? Java Basics - Anfänger-Themen 1
S String kürzen auf bestimmte Länge Java Basics - Anfänger-Themen 5
G länge eines arrays bestimmen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben