spalten in punkten ausfüllen

Status
Nicht offen für weitere Antworten.
M

monym

Gast
Hallo....

Habe folg. Problem....:(
Eine Methode die mir jeweils den Methodennamen zurückgibt...(1. Spalte)
dann habe ich noch eine 2. Methode die entweder ja oder nein zurückgibt. (2. Spalte)
Als Ergebnis erhalte ich ein paar Zeilen die so aussehen:

Code:
Methodeeins..........ja
Methodezwanzig..........nein
Methodesieben..........nein
....

Würde das gerne so ausrichten dass es so ausieht

Code:
Methodeeins..........ja
Methodezwanzig.....nein
Methodesieben......nein


Also dass alles schön ausgerichtet ist untereinander...Wie kann ich das am besten lösen?

lg
 

L-ectron-X

Gesperrter Benutzer
Du ermittelst die Länge den längsten Namen aus Methode1.
Du ermittelst die Länge des längsten Wortes aus Methode2.
Du überlegst dir, wie viele Punkte dazwischen maximal liegen sollen.
Aus diesen Werten errechnest du die maximale Gesamtlänge eines temporären Strings, der ausschließlich aus Punkten besteht.
Also, wenn die Summe der ermittelten Zeichen 30 ergibt, erzeugst einen String mit 30 Punkten.
Mit einem StringBuffer/StringBuilder ist es nun leicht die Punkte mit den Worten aus Methode1 am Anfang und mit den Worten aus Methode2 am Ende des Punkt-Strings zu ersetzen.
 

Leroy42

Top Contributor
Ich gehe mal davon aus, daß du monospaced Fonts verwendest (verwenden kannst),
sonst wirds nämlich etwas friemeliger :cool:

1. Lass dir in einer Schleife eimal vorab alle Methodennamen generieren um die
Länge des längsten zu bestimmen.

2. Im eigentlichen Durchlauf schreibst du erstmal den Namen und hängst dann
in einer Schleife jeweils soviele Punkte an wie zur Maximallänge noch fehlen.

Code:
int maxLength = 0;
for (int i=0; i < n; ++i) {
    int curLength = getName(i).length();
    if (maxLength < curLength)
        maxLength = curLength;
}

for (int i=0; i < n; ++i) {
    StringBuffer sb = new StringBuffer();
    String name = getName(i);
    sb.append(name);
    for (int i = maxLength - name.length(); i > 0; ++i)
        sb.append('.'):
    System.out.println(sb.append(isTrue(i) ? "..ja" : "nein"));
}

Edit: In der inneren Schleife muß es natürlich --i heißen
 
M

monym

Gast
Hi...Danke Leroy42 für deine Hilfe...
Nur funkt das leidern nicht sor richtig...

Hab das versucht auf mein bsp zu adaptieren..aber bekomme gleich hier probleme, ich hier das "i" nirgends einzsetzen kann.
Code:
 int curLength = description.getDisplayName().substring(0,description.getDisplayName().indexOf(i)).length();

Auch hier krieg ich ein Problem:
Code:
		    String name = description.getDisplayName().substring(0,description.getDisplayName().indexOf("(")).length();
Er kann hier nicht von int zu string konvertieren..und auch hier wieder das Problem mit "i"....

Zu guter letzt will er hier das isTrue nicht:
Code:
 System.out.println(sb.append(isTrue(i) ? "..ja" : "nein"));


Diese lange Zeile für den Methodennamen ist leider notwendig...Bitte bitte dringend um hilfe..weiß sonst nicht wie ich das lösen soll...

lg
 

Leroy42

Top Contributor
So auf Anhieb verstehe ich nicht, wo das Problem ist.

Wenn du bereits ein i verwendest, mußt du natürlich meine Laufvariable
umbenennen, damit die sich nicht ins Gehege kommen.

Du hattest geschrieben: dann habe ich noch eine 2. Methode die entweder ja oder nein zurückgibt

Auf die hatte ich mit isTrue(i) hinweisen wollen.
Was gibt die Methode denn zurück? "ja"/"nein" oder ein boolean true/false?
Dementsprechend mußt die die Ausgabe der 2. Spalte anpassen
 
G

Guest

Gast
in deinem Code hast du ja zb geschrieben:
Code:
 int curLength = getName(i).length();
->bei mir nimmt er das (i) nicht, weiß nicht wo ich das hinschreiben soll in meiner Zeile, weil ich immer eine Fehlermeldung bekommen zB wenn ich es bei .getDisplayName(i) hinschreibe.
Code:
		    int curLength = description.getDisplayName(i).substring(0,description.getDisplayName().indexOf(i)).length();

Genau das gleiche Problem in der Zeile:
Code:
		    String name = description.getDisplayName(i).substring(0,description.getDisplayName().indexOf("(")).length();
Auch hier ist er mit dem (i) in getDisplayName nicht einverstanden

weißt du was ich mein? :(
 

Leroy42

Top Contributor
Leider nicht :(

Aber wenn du schon schreibst: "Er ist damit nicht einverstanden" dann poste doch
die genaue Fehlermeldung; dafür ist sie ja schließlich da.

Und am besten noch die ganze Methode aus der du bis jetzt nur Schnipsel
gepostet hast.
 
M

monym

Gast
Die Methode ist ein Junit Listener der mir ausgibt ob ein Test wurde bestanden wurde mit ja oder nein...

Code:
public void testFinished(Description description) 
	{
	
		if (failed) //test schlug fehl
		{
			System.out.print("." +description.getDisplayName().substring(0,description.getDisplayName().indexOf("(")) +"..........nein" +"\n");
			//System.out.println("Länge :"+description.getDisplayName().substring(0,description.getDisplayName().indexOf("(")).length());
		}
		else  //test bestanden
		{
			System.out.print("." +description.getDisplayName().substring(0,description.getDisplayName().indexOf("(")) +"..........ja" +"\n");
		} 
	}


public void testStarted(Description description) 
	{
		failed = false;		
	}
	


public void testFailure(Failure failure) 
	{ 
		failed = true;
	}




und in dieser Methode (testFinished) würd ich gern das schöne Ausrichten der Spalten machen.... :(
 

Leroy42

Top Contributor
Anonymous hat gesagt.:
Code:
description.getDisplayName().indexOf(i)
deutet daraufhin, daß du bereits eine String-Variable namens i benutzt.

Dann kannst du dieses i natürlich nicht mehr als Integer-Laufvariable benutzen.

BTW: Ein String-Variable i zu nennen, sollte man vermeiden. Schon aus alten
Fortran-Tagen stehen i, j, k, l und m eigentlich immer für Ganzzahlen
 

Leroy42

Top Contributor
Jetzt wird das ganze schon klarer :D

description.getDisplayName().substring(0,description.getDisplayName().indexOf("("))

ist also dein eigentlicher Name. Wegen der Übersicht, würde ich eine Hilfsvariable
einfügen:

Code:
String name = description.getDisplayName();
name = name.substring(0, name.indexOf('('));

Zum anderen rufst du die testFinished-Methode in einer Schleife von außen auf,
dann kannst meine Schleife natürlich mit hineinnehmen und mußt die Maximallänge
vorher bestimmen.

Telefonat.... Warte mal einen Moment.
 

Leroy42

Top Contributor
Ansatz außerhalb deiner testFinished-Methode:
Zuerst alle möglichen description vorab durchlaufen.
Code:
int maxLength = 0; 
for (int i=0; i < n; ++i) { 
    String name = description.getDisplayName(); 
    int curLength = name.indexOf('(');
    if (maxLength < curLength) 
        maxLength = curLength; 
}

Hier weiß ich nicht, wie du auf die verschieden descriptions Zugriff erhälst.
Im 2. Durchlauf, der schließlich die Ausgaben erzeugst, mußt du deiner testFinished-Methode
jetzt die ermittelte Maximallänge der Namen übergeben:

Code:
...
testFinished(description, maxLength)
...

Deine testFinished-Methode sieht jetzt so aus:
Code:
public void testFinished(Description description, int maxLength) {
  String name = description.getDisplayName(); 
  name = name.substring(0, name.indexOf('('));

  System.out.print("." + name);

  StringBuffer sb = new StringBuffer(); 
  for (int i=0; i < n; ++i) { 
      for (int i = maxLength - name.length(); i > 0; ++i) 
          sb.append('.'): 
  }
  System.out.print(sb.toString());
  System.out.println(failed ? "nein" : "..ja");
}
 
M

monym

Gast
hmm....ganz schön komplex die sache...


den Doppelpunkt mag er leider hier nicht: (syntax error)
Code:
 sb.append('.'):

Leider kann ich ausserhalb der testFinisehd nicht auf die Description zugreifen...denke, dass
ich alles innerhalb dieser Funktion machen müsste...müsste das auch so gehn, wenn ich alles
in der Methode mache?
 

Leroy42

Top Contributor
monym hat gesagt.:
den Doppelpunkt mag er leider hier nicht: (syntax error)
Code:
 sb.append('.'):
Mein Fehler; soll natürlich ein Semikolon sein.
monym hat gesagt.:
Leider kann ich ausserhalb der testFinisehd nicht auf die Description zugreifen...
:shock:
Das kann nicht sein, denn in dem von dir gepostet Code übergibst du ja bereits
der Methode testFinished ein description
monym hat gesagt.:
hmm....ganz schön komplex die sache...


den Doppelpunkt mag er leider hier nicht: (syntax error)
Code:
 sb.append('.'):

monym hat gesagt.:
denke, dass
ich alles innerhalb dieser Funktion machen müsste...müsste das auch so gehn, wenn ich alles
in der Methode mache?

Im Prinzip schon, aber dann müßtest du zuviel an deinem Restprogramm umstellen, was
zuviel Aufwand wäre.

Ansonsten poste einfach mal den Codeteil der Schleife die die Methode testFinished
mit den verschieden Instanzen von description aufruft.
 
M

monym

Gast
ok...habs jetzt mal so versucht:

Code:
public void testFinished(Description description) {
		
		int maxLength = 0;
		for (int i=0; i < 70; ++i) {
		    String name = description.getDisplayName();
		    int curLength = name.indexOf('(');
		    if (maxLength < curLength)
		        maxLength = curLength;
		}
		
		
		
			  String name = description.getDisplayName();
			  name = name.substring(0, name.indexOf('('));

			  System.out.print("." + name);

			  StringBuffer sb = new StringBuffer();
			  for (int i=0; i < 70; ++i) {
			      for (int j = maxLength - name.length(); j > 0; ++j)
			          sb.append('.');
			  }
			  System.out.print(sb.toString());
			  System.out.println(failed ? "..nein" : "....ja");


und hab als Ausgabe das erhalten:
.testAdd1.....ja
.testAdd2.....ja
.testAdd3..nein
.testSub1..nein
.testSub2.....ja
.testSub3.....ja
.testMultiply1..nein
.testMultiply2.....ja
.testMultiply3..nein
.testMultiply4.....ja
.testDivide1.....ja
.testDivide2..nein
.testDivide3..nein
.testDivide4..nein
.testabsoluteValue1....ja
.testabsoluteValue2....ja


bei den kurzen Namen passt nur bei den längern stimmts leider noch nicht ganz... :cry:
 

Leroy42

Top Contributor
Das hat mit kurzen oder langen Namen nichts zu tun:
Code:
for (int i=0; i < 70; ++i) { 
  String name = description.getDisplayName();
  ...
}

Du läßt eine Schleife 70-mal durchlaufen und bestimmst darin jedesmal die Namenslänge
desselben description-Objects, was natürlich immer die Länge des gerade übergebenen ergibt.
Das kannst du alleine daran sehen, daß du innerhalb der Schleife das i nie benutzst.

Um die Maximallänge zu bestimmen mußt du aber die Längen aller
descriptions vergleichen.

Wie man sieht rufst du aber außerhalb von testFinished eben diese Methode mit
den verschieden descriptions auf. Das muß ja innerhalb einer Schleife sein,
die dir irgendwie die 70 description-Objekte liefert.

Und genau dort mußt du die 70 Objekte 2-mal durchlaufen; einmal um die Länge
des längsten Namens zu bestimmen und danach deine bisherige Schleife,
in der du testFinished aufrufst: Nur diesmal kannst/mußt du der testFinished-Methode
noch die gerade ermittelte Maximallänge übergeben, so daß diese weiß, wieviele
Punkte bei dem aktuellen Namen noch fehlen.
 
M

monym

Gast
mir fällt nicht wirklich was ein, wo ich diesen Teil hinschreiben soll...
Code:
int maxLength = 0;
		for (int i=0; i < 70; ++i) {
		    String name = description.getDisplayName();
		    int curLength = name.indexOf('(');
		    if (maxLength < curLength)
		        maxLength = curLength;
		}

als eigene Methode, der ich (Description description) übergebe funktioniert nicht. Da gibt er mir keine Testsnamen mehr aus.
 

Leroy42

Top Contributor
Dann post doch (endlich) den relevanten Teil der Schleife,
in der du dieses 70 description-Objekte bekommst und sie an testFinished übergibst.
Denn genau das muß diese Schleife ja rein

Oder ist der so geheim? :shock:
 
M

monym

Gast
hier gibt es lieder ja keine schleife...Alles was der Listener macht ist das:
Code:
class TestListener extends RunListener 
{ 
	boolean failed;
	
	
	public void testFinished(Description description) //Called when an atomic test has finished, whether the test succeeds or fails.
	{
		if (failed) 
		{
			System.out.print("." +description.getDisplayName().substring(0,description.getDisplayName().indexOf("(")) +"..........failed" +"\n");
		}
		else 
		{
			System.out.print("." +description.getDisplayName().substring(0,description.getDisplayName().indexOf("(")) +"..........passed" +"\n");
		} 
	}


	public void testRunStarted(Description description)  //header
	{ 
		
		System.out.println("Durchfuehren der Tests-Test am " + new java.util.Date());
		System.out.println("-------------------------------------------------------------------------------");
	}


	public void testStarted(Description description) //Called when an atomic test is about to be started.
	{
		failed = false;		
	}
	


	public void testFailure(Failure failure) 
	{ 
		failed = true;
	}


Der Listener generiert die einzelnen Testfälle und damit die Beschreibung glaub ich selber...Aufgerufen
wird der Listener über die Main in einer anderen Klasse...
 

André Uhres

Top Contributor
monym hat gesagt.:
Würde das gerne so ausrichten dass es so ausieht
Code:
Methodeeins..........ja
Methodezwanzig.....nein
Methodesieben......nein
Code:
   public void testFinished(Description description) {
        String result = "ja";
        if (failed){
            result = "nein";
        }
        String desc = description.getDisplayName();
        String name = desc.substring( 0, desc.indexOf("(") );
        int len = name.length() + result.length();
        String punkte = "..................................................";
        System.out.println("." 
                + name 
                + punkte.substring(len) 
                + result);
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen TableColumModel passt nur die aktuell zu sehenden Spalten an Java Basics - Anfänger-Themen 4
districon 2D Array - Zeilen und Spalten durchsuchen Java Basics - Anfänger-Themen 3
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
P JSON-Array auf Excel-Spalten verteilen? Java Basics - Anfänger-Themen 5
M Best Practice Verschieben einzelner Spalten eines JTables verhindern Java Basics - Anfänger-Themen 5
I Datei mit 2 Spalten und millionen Zeilen Java Basics - Anfänger-Themen 19
G DefaultTableModel Spalten in Array schreiben Java Basics - Anfänger-Themen 4
C Spalten Java Basics - Anfänger-Themen 6
L Zeilen und Spalten sortieren Java Basics - Anfänger-Themen 11
Q Spalten in .txt-Datei Java Basics - Anfänger-Themen 2
R Erste Schritte 2D-Array: Zeilen & Spalten ohne schleife übergeben? Java Basics - Anfänger-Themen 3
D Inhalt der Spalten einer Tabelle addieren Java Basics - Anfänger-Themen 4
K apache poi - Spalten zählen Java Basics - Anfänger-Themen 4
C Array in Spalten angeben Java Basics - Anfänger-Themen 44
C AbstractTableModel Spalten-Namen Java Basics - Anfänger-Themen 3
E Array mit Zahlen von 1-(Zeilen*Spalten) befüllen Java Basics - Anfänger-Themen 8
T JTable Spalten zusammenfassen Java Basics - Anfänger-Themen 5
0 CSV Import - Zeilen, Spalten Java Basics - Anfänger-Themen 15
J matrix nach summe der spalten sortieren Java Basics - Anfänger-Themen 5
S bestimmtes Auslesen von Spalten eines ResultSet ? Java Basics - Anfänger-Themen 7
D excel datei Spalten lesen? Java Basics - Anfänger-Themen 7
G Tabelle mit blinden Spalten Java Basics - Anfänger-Themen 5
H 3 buttons in 3-spalten eines frames Java Basics - Anfänger-Themen 3
D JTable - Verschieben der Spalten deaktivieren <- wie? Java Basics - Anfänger-Themen 5
F Zeilen und Spalten in JTable Selektieren Java Basics - Anfänger-Themen 2
S Daten aus txt-datei einzeln nach Spalten einlesen Java Basics - Anfänger-Themen 16
R Hinzufügen von Spalten/Zeilen Java Basics - Anfänger-Themen 3
D 2 Spalten in Vector speichern. Java Basics - Anfänger-Themen 6
D Spalten-Ausgabe Java Basics - Anfänger-Themen 6
G Kann man Spalten in einer Excel-Tabelle mit Java löschen? Java Basics - Anfänger-Themen 3
S Mit line.split() leider unterschiedliche Anzahl von Spalten Java Basics - Anfänger-Themen 19
D JTextArea mit 2 Spalten Java Basics - Anfänger-Themen 5
G Vector mit "mehreren Spalten" Java Basics - Anfänger-Themen 6
S Erste Schritte Zwischen zwei Punkten ein Minimumpkt./Maxima finden Java Basics - Anfänger-Themen 1
W Wie kann ich in Java eine Kurve aus Punkten zeichnen? Java Basics - Anfänger-Themen 25
X JTable mit grünen und roten Punkten Java Basics - Anfänger-Themen 2
B Distanz zwischen zwei Punkten Java Basics - Anfänger-Themen 4
D Suche nach der Anzahl von Zonen zwischen zwei Punkten Java Basics - Anfänger-Themen 2
A if-Anweisung zwischen zwei Punkten Java Basics - Anfänger-Themen 1
E Berechnung von Punkten Java Basics - Anfänger-Themen 4
D Berechnung des Abstandes von zwei Punkten in einem Koordinatensystem Java Basics - Anfänger-Themen 14
M Länge der Strecke zwischen zwei Punkten Java Basics - Anfänger-Themen 10
H Methoden Array aus Punkten erzeugen, mittels Punkt-Klasse Java Basics - Anfänger-Themen 5
N Winckel zwischen zwei Punkten Java Basics - Anfänger-Themen 9
K Methoden Distanz von 2 Punkten im 2D-Raum Java Basics - Anfänger-Themen 9
Mikescher Winkel zwischen 2 Punkten und der X-Achse Java Basics - Anfänger-Themen 11
B Anzahl von gerundeten Punkten bestimmen Java Basics - Anfänger-Themen 9
B Kürzesten Weg zwischen mehreren Punkten finden (rekursiv) Java Basics - Anfänger-Themen 5
P Abstand zwischen zwei Punkten Java Basics - Anfänger-Themen 4
G Kommata in Punkten konvertieren Java Basics - Anfänger-Themen 5
C Koordinaten von Punkten übergeben und zeichnen lassen Java Basics - Anfänger-Themen 8
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
C Array in allen Kombinationen ausfüllen Java Basics - Anfänger-Themen 17
J automatisches ausfüllen eines PDF Formulars Java Basics - Anfänger-Themen 4
R ReCaptcha lesen und ausfüllen Java Basics - Anfänger-Themen 2
TheKing HTML Formular mit Java ausfüllen und absenden Java Basics - Anfänger-Themen 9
P Browser-Formulare ausfüllen Java Basics - Anfänger-Themen 2
A Grafik 2d Objekte farblich ausfüllen Java Basics - Anfänger-Themen 15
G Button komplett mit Texture ausfüllen? Java Basics - Anfänger-Themen 5
G Mit Java HTML-Formular ausfüllen Java Basics - Anfänger-Themen 4
M Formulare ausfüllen / Links aktivieren [erledigt] Java Basics - Anfänger-Themen 3
J Leere Textfields automatisch mit einem Wert ausfüllen Java Basics - Anfänger-Themen 3
C auf Internetseite Formulare ausfüllen und Buttons klicken Java Basics - Anfänger-Themen 2
I Javascript formulare, mit Java ausfüllen. Java Basics - Anfänger-Themen 2
L Sechseck ausfüllen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben