Aufgabenblatt4


Stimmt! Eine habe ich gefunden und Testergebnis ist jetzt 55%. Mehr Tippfehler gibt es nicht: ich habe 3mal geschaut.


Also, im Moment weiss ich auch nicht weiter, was da noch falsch sein koennte.
Haeng am besten mal mal hier drin deinen Quellcode als Datei an.


Diese Code habe ich…

Attachment:
meinString.java: https://fsi.cs.fau.de/unb-attachments/post_28838/meinString.java


[m]holeZeichenkette()[/m] sollte [m]this.zeichenkette[/m] zurueckgeben und nicht irgendeinen anderen String!
Ausserdem solltest du vielleicht bei manchen Methoden noch nachpruefen, ob die erhaltenen Argumente Sinn ergeben oder nicht. (Zum Beispiel sollte man nicht unbedingt versuchen, Zeichen Nummer 10 auszugeben, wenn der String nur 6 Zeichen lang ist.)

Ach ja: Und die Konkatenation sollte die vorhandene Zeichenkette und das Argument aneinander haengen, anstatt erstere teilweise zu ueberschreiben.


Danke! Ich habe verbessert, aber es bleibt nur 55%. Egal, ich lasse so, wie es is’.


Das ist die falsche Einstellung! :finger:
Wir woll’n euch kaempfen seh’n, wir woll’n euch kaempfen sehn, … :-p

Btw. bist du im CIP? Ich sitze am Rechner direkt an der Tuer.


Nein, ich bin nicht im CIP…
Aber trotztem Danke für deine Hilfsbereitschaft!!!
Ich muss noch Analysis machen, deswegen keine Zeit.
Viel Spaß!


So, nachdem einige andere Leute auch bei 55% fest gesteckt waren, haben wir uns mit zwei Uebungsleitern zusammengesetzt.
Alles, was man machen muss, ist eine Ausnahmebehandlung fuer [m]print()[/m]. Wenn man eine leere Zeichenkette ([m]null[/m]) ausgeben will, verabschiedet sich der Testcase mit einer NullPointerException.


Ich habe print() auch jetzt geaendert, aber Testcase zeigt trotzdem 55% :frowning:


WK, überleg dir doch immer auch den Fall, dass deine char Array bzw. eine übergebene meinString Referenz gleich “null” ist!

public char holeZeichen(int at){
	return zeichenkette[at];
}

public void setzeZeichen(int at, char zeichen){
	zeichenkette[at]=zeichen;
}

Was, wenn “at” gleich “5” ist, aber deine Zeichenkette nur 3 Zeichen lang?

public void setzeZeichenkette(char[] zeichenkette){
	for (int i=0; i<zeichenkette.length; i++)
		this.zeichenkette[i]=zeichenkette[i];
}

Was, wenn “zeichenkette” gleich “null”?

public int holeLaenge(){
	return zeichenkette.length;
}

Was, wenn “zeichenkette” gleich “null”?

public meinString(char[] zeichenkette){
	laenge=zeichenkette.length;
	for (int i=0; i<laenge; i++)
		this.zeichenkette[i]=zeichenkette[i];
}

Was, wenn “zeichenkette” gleich “null”?

public meinString(meinString kopierString){
	laenge=kopierString.holeLaenge();
	for (int i=0; i<laenge; i++)
		this.zeichenkette[i]=kopierString.zeichenkette[i];
}

Was, wenn “kopierString” gleich “null”?

Und so weiter… Prinzip verstanden?

Flo


public class multroots {
	public static void main (String []args)
	{	int a=2;
		int b=6;
		System.out.println(f(a,b));
	}	
	public static double f(int a, int b)
	{
		double c= Math.sqrt(b);	
		if (a<b)
		{
			for (;a<b;a++)
			{
			c=c*Math.sqrt(a);
			}	
		}
		else if (a==b)
		{
			c=Math.sqrt(a);
		}
		else 
		{
			for (;a>b;a--)
			{
				c=c*Math.sqrt(a);
			}			
		}
		return c;
		}
	
}

Kann mir jemand sagen warum ich nur 20% kriege? :wand:


setz doch mal in der for schleife, anstatt a<b, mal a<=b, und bei a>b, a>=b;
okej:D, und mach oben c=1.0;
dann sollte es passen;


@ValentinesDayMassacre
Danke! - 100% :rolleyes:


Kein Prob, mann hilft wo man, kann denn ich mag diesen testcase au net :smiley:


Ja, ich habe verstanden. Danke! Ich habe alle Methoden verbessert. Jetzt habe ich 60%-schon besser :wink:


Vorschlag:
Schreibt euren Quellcode nicht direkt ins Forum, sondern haengt die Datei an euren Beitrag an! Dadurch wird die Sache ein kleines bisschen uebersichtlicher und es gibt keine Threads mit einem halben Dutzend Seiten, wo aus Platzgruenden nur 3 Beitraege pro Seite angezeigt werden.


Meine Code…

Attachment:
meinString.java: https://fsi.cs.fau.de/unb-attachments/post_28894/meinString.java


Die Konkatenation funktioniert bei dir noch nicht ordentlich. Du solltest innerhalb dieser Funktion keinen neuen [m]meinString[/m] erstellen, sondern nur ein [m]char[][/m]. Und das gibst du dann mittels [m]return new meinString(dasArray);[/m] zurueck.

Ausserdem solltest du dir die Angabe noch mal genau anschauen: Die beiden Attribute haben im UML-Diagramm ein Minuszeichen voranstehen, d.h. sie sollen als [m]private[/m] deklariert werden. Dann kann man nur noch mit den bekannten Hilfsfunktionen [m]holeXXX()[/m] bzw. [m]setzeXXX()[/m] auf sie zugreifen.


Ich habe das alles gemacht, aber Testcases zeigen 60%!!!

Attachment:
meinString.java: https://fsi.cs.fau.de/unb-attachments/post_28898/meinString.java


Der Fehler liegt hier:
[m]h=this.holeZeichenkette();[/m]
Diese Anweisung kopiert nicht den Inhalt deiner Zeichenkette in das Array, sondern ersetzt gleich ihre Referenz! Was du machen musst, ist eine zusaetliche Schleife einzufuehren, die genauso funktioniert wie die andere Schleife, die du schon eingebaut hast.