mögliche Gründe
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Fehler beim Anwenden des Testfalls
Hi, ich hab noch ne blöde Frage, auch wenn die Informatiker wahrscheinlich noch gar nicht wach sind
Bei der 2.3 bekomm ich im EST ein rotes Kreuz (Fehler im Anwenden des Testfalls), obwohl alle Methoden Köpfe richtig sind (wie in der Vorlage).
Hat jemand noch ein paar Ideen, was man überprüfen kann, wenn der Fehler kommt?
Vielen Dank
Hast du alle geforderten Klassen-Variablen angelegt? Sind diese alle public?
Morgen; danke für die Antwort.
Ja hab ich nach bestem Wissen und gewissen gemacht
Alles ist public static.
Selber anlegen musste man ja nur die Konstante FOO_BAR, die enum Monthsund das char[] UNICODE, oder?
Worauf wird denn da sonst noch geprüft? Gibts noch was außer Sichtbarkeit, static, final, (Rückgabewerte)?
Danke
Ein haeufiger Fehler ist z.B. ein falscher Datentyp bei den Konstanten. Kontrollier nochmal, ob die wirklich passen.
Das kann ich eigentlich ausschließen… Darf ich hier die Deklaration meiner Konstanten posten, oder soll man das lieber nicht tun?
Solltest du lieber nicht tun. Kontrollier einfach die TODO-Kommentare, teilweise steht’s sogar explizit drin.
ok. Bei FOO_BAR gibts ja eig. nur eine funktionierende Möglichkeit, die anderen werden vom Kompiler schon bemängelt, oder? Month ist eine Enumeration, da gibts ja nichts weiter zu beachten. Die char-/int- Arrays und die main sind schon vorgegeben. Und UNICODE soll bestimmt kein String-Array sein, oder? Also bleibt da ja auch nur eine Möglichkeit.
Gibt es da dann wirklich 0 Pkt. oder schaut da nochmal wer drüber und gibt Gnadenpunkte?
ja es gibt 0 Punkte.
evtl. hast du dich bei den Monatsnamen vertippt?
UNICODE soll kein Array sein, nein. Ich zitiere: “declare a constant String” (da steht nichts von Array). Ein String ist ja eine Zeichenkette und kann mehrere Zeichen aufnehmen.
Vergleiche Folie 2-51 vs. 2-68
Eeeha, wie bin ich denn auf char[] gekommen
Vielen Dank euch allen und @meisterT: du hast was gut bei mir
Das war knapp
Ich bin es leid.
Guten Tag,
da die Aufgabe durch ist, poste ich hier mal meinen “fehlerhaften Code” mit Kommentar, um am Beispiel zu zeigen, dass die Arbeitsanweisungen nicht eindeutig gestellt waren.
Damit so etwas in Zukunft nicht wieder passiert, werde ich ab heute hier regelmäßig im Forum nachhaken welchen Datentyp oder welchen Zugriffsmodifizierer ihr eingentlich haben wollt.
Es nervt mich, wenn entweder die Anforderungen nicht präzise sind, oder eben die Fehlermeldungen. Es wäre ein leichtes gewesen, mit Hilfe von JAVA Reflection entweder mehr Fälle gegenzutesten oder noch einfacher: KLARE ANFORDERUNGEN zu stellen.
btw: Ich programmiere seit 10 Jahren Java, bin zertifizierter Tester und Softwareentwickler von Beruf und war Referent auf der IQNITE. 0 Punkte. Supergeil.
import java.util.Arrays;
/**
* Pseudo-testclass for different datatypes in JAVA
* @author nils
*
*/
public class Datentypen {
// DONE: declare a constant named "FOO_BAR" with a value of -123.456 * 10^(-89)
/** However it is unclear if we need a double, a BigDecimal
* or something else since -123.456 * 10^(-89) is not a vaild expression and what about the access modifier (private, package private or public)?
*/
private static final double FOO_BAR = -123.456 * (10 ^ -89);
// DONE: declare an enumeration named "Months" containing the
// english names in CAPITAL_LETTERS (!) of all the 12 months of the year
/** However it is unclear if we need the access modifier (private, package private or public) */
private static enum Months {
JANUARY,
FEBRUARY,
MARCH,
APRIL,
MAY,
JUNE,
JULY,
AUGUST,
SEPTEMBER,
OCTOBER,
NOVEMBER,
DECEMBER
}
public static char[] someCharacters() {
// DONE: declare, fill and return an 1-dimensional
// array containing the ASCII-letters A to Z (capital letters)
char[] upperCaseLetters = new char[26];
for (int i = 0; i < 26; i++) {
upperCaseLetters[i] = (char) (i + 65);
}
return upperCaseLetters;
}
public static char[][] someMoreCharacters() {
// DONE: declare, fill and return a 2-dimensional array containing
char[][] moreLetters = new char[4][26];
// 1) the values (!) 0 to 25 in the first row,
for (int i = 0; i < 26; i++) {
moreLetters[0][i] = (char) i;
}
// 2) the ASCII-letters A to Z (capital letters) in the second row,
moreLetters[1] = someCharacters();
// 3) the ASCII-characters (!) 0 to 9, than 0 to 9 again and finally 0 to 5 in the third row
for (int i = 0; i < 10; i++) {
moreLetters[2][i] = (char) (i + 48);
moreLetters[2][i + 10] = moreLetters[2][i];
}
for (int i = 0; i < 6; i++) {
moreLetters[2][i + 20] = moreLetters[2][i];
}
// 4) the ASCII-letters a to z (non-capital letters) in the fourth row,
for (int i = 0; i < 26; i++) {
moreLetters[3][i] = (char) (i + 97);
}
return moreLetters;
}
// DONE: declare a constant String named "UNICODE" containing the
// greek non-capital alphabet from alpha [03B1] to omega [03C9]
// with a horizontal tabulator between groups of five letters each
// (e.g. after epsilon, after kappa, after omicron and after tau)
// and finally followed by a line feed (ASCII: 0x0A)
// (no spaces or other symbols than those above!!)
static final String UNICODE;
static {
final StringBuilder sb = new StringBuilder();
int groupCount = 5;
for (int i = 0x03B1; i < 0x03D0; i++) {
groupCount--;
sb.append(Character.toChars(i));
// Append tabulator after every fifth letter
if (groupCount == 0) {
groupCount = 5;
sb.append("\t"); //$NON-NLS-1$
}
}
// Append line feed
sb.append(Character.toChars(0x0A));
// or better: sb.append("\n")); //$NON-NLS-1$
UNICODE = sb.toString();
}
// DONE: declare, fill and return a 3-dimensional array
// of size 3x3x3 (try to imagine a http://en.wikipedia.org/wiki/Rubik's_Cube)
// containing only integer numbers such that
// the value at [x][y][z] == (x+1)*100+(y+1)*10+(z+1)
// (e.g. cube[2][1][0] == 321)
private static final int[][][] cube = new int[3][3][3];
static {
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
for (int z = 0; z < 3; z++) {
cube[x][y][z] = (x+1)*100+(y+1)*10+z+1;
}
}
}
}
public static int[][][] theCube() {
return cube;
}
// nothing to do ;) - please do nothing here:
public static void main(String[] args) {
System.out.println("-----"); //$NON-NLS-1$
System.out.println(Datentypen.FOO_BAR);
System.out.println("-----"); //$NON-NLS-1$
System.out.println(Months.OCTOBER);
System.out.println("-----"); //$NON-NLS-1$
System.out.println(Arrays.toString(someCharacters()));
System.out.println("-----"); //$NON-NLS-1$
for (char[] r : someMoreCharacters()) {
System.out.println(Arrays.toString(r));
}
System.out.println("-----"); //$NON-NLS-1$
System.out.println("[" + Datentypen.UNICODE + "]"); //$NON-NLS-1$ //$NON-NLS-2$
System.out.println("-----"); //$NON-NLS-1$
for (int[][] plane : theCube()) {
for (int[] row : plane) {
System.out.print(Arrays.toString(row));
}
System.out.println();
}
}
}
Ich seit 4 Wochen und mir ist das nicht passiert. Das EST gibt dir doch eigentlich eine Rückmeldung, ob dein Code in den Testfällen ok war oder nicht. Hattest du einen grünen Haken? Wenn nein, selbst schuld. Wenn ja, schreib doch einfach mal ne Mail, das wird man dann schon klären können.
private static final double FOO_BAR = -123.456 * (10 ^ -89);
^ ist ein Hochzeichen, kein (or?) Operator - deswegen z.B definitiv falsch. Außerdem ist es dir ja freigestellt, bei Unklarheiten nachzufragen. Wenn du davon kein Gebrauch machst…
public static final double FOO_BAR = -123.456 * (Math.pow(10,-89)); → ✓ 1.00 | check Datentypen.FOO_BAR
Bei Math.Pow musste allerdings aufpassen das es nicht explizit verboten ist (steht allerdings dann auch in der Aufgabenstellung drin).
ansonsten kann ich unserer While-Schleife auch nur beipflichten, gerade solche Sachen kann man hier nachfragen, auch ohne den ganzen Code zu posten.
und bei 10 Jahren Programmiererfahrung mit Java hätte ich eigentlich erwartet, das sowas im Schlaf gemacht wird, das sind ja alles noch Grundlagen was hier gefordert wird (wenn auch manchmal die Aufgabenstellung etwas merkwürdig formuliert ist und nicht sofort klar ist was gewollt ist, beim ersten lesen (Das hat Herr Oster leider drauf ;))).
Der Vollständigkeit halber: Geht auch einfacher mit -123.456e-89. Siehe VL F2-48.
Math.pow bei der Definition zu verwenden, ist jetzt nicht so schön. Einfacher geht es auch so:
public static final double VALUE = -123.456E-89;
Außerdem dachte ich, dass es eine EST-Mail gab, die darauf hingewiesen hat, dass alle Felder public sein müssten.
Naja, aber das ist ja nur für Zehnerpotenzen anwendbar, oder? Also finde ich persönlich Math.Pow nicht so unschön
Ach Tatsache, da ist sie ja:
Bester Trollpost seit langen,
Hier kommt Topper:
Ich programmiere seit 1997 in Java, bilde zertifizierte Tester aus, habe als Software-Engineer promoviert und war Referent auf der TAV, SOQUA, SAFECOMP, EWICS, ARCS, u.v.m. - und schreibe ziemlich sicher noch immer fehlerhaften Code…
Falls es dich tröstet polymorphie: Ich und Tristos haben schon aus wesentlich dümmeren Gründen 0 Punkte bekommen…