Java Quiz

"HZdZG_"
geht doch auch, das bisschen probieren :wink:

bevor das ganz in Vergessenheit gerät kurz die Auflösung von #330:

Es gibt eine Exception weil progressProperty() nur aus dem FX-Eventloop heraus aufgerufen werden darf…

bye
TT

[QUOTE=SlaterB]"HZdZG_"
geht doch auch, das bisschen probieren ;)[/QUOTE]
Was verstehst du unter “bisschen probieren”?

[QUOTE=Timothy_Truckle;129343]bevor das ganz in Vergessenheit gerät kurz die Auflösung von #330:

Es gibt eine Exception weil progressProperty() nur aus dem FX-Eventloop heraus aufgerufen werden darf…

bye
TT[/QUOTE]
Interessant. Nach der Doku aber
"The Worker’s progress can be monitored via three different properties, totalWork, workDone, and progress. These properties are set by the actual implementation of the Worker interface, but can be observed by anybody."
Also ich glaube dir natürlich, dennoch merkwürdig.

probieren:
„aa“ führt nicht zu Hashcode ~Integer.MAX_VALUE, paar Buchstaben mehr müssen es sein,
bei 6 dann für den richtigen Wert der erste Buchstabe alles entscheidend, geht mit Faktor 31 ein,
wenn dort H gefunden, dann Rest nach und nach auch

< 15 Min., aber im Nachhinein immer leichter :wink:

[quote=TMII]“The Worker’s progress can be monitored via three different properties, totalWork, workDone, and progress. These properties are set by the actual implementation of the Worker interface, but can be observed by anybody.”
Also ich glaube dir natürlich, dennoch merkwürdig.[/quote]Es gibt in der Klasse [JAPI]Task[/JAPI] eigene update* und set* Methoden für diese Properties. Wenn man die benutzt ist alle OK…

bye
TT

hmmm - hab ich mal irgendwo gefunden gehabt

Schreib symmetrische split ↔ unsplit Methoden, so dass die folgenden Tests grün werden

@Test
public void simpleCase() {
	Assert.assertEquals(unsplit(split("barfoo", 'r'), 'r'), "barfoo");
}

@Test
public void noMatch() {
	Assert.assertEquals(unsplit(split("barfoo", 'z'), 'z'), "barfoo");
}

@Test
public void withNewline() {
	Assert.assertEquals(unsplit(split("
", 'x'), 'x'), "
");
}

@Test
public void withWhitespaces() {
	Assert.assertEquals(unsplit(split(" ", 'x'), 'x'), " ");
}

@Test
public void withDelimiterAtTheEnd() {
	Assert.assertEquals(unsplit(split("barbar", 'r'), 'r'), "barbar");
}```

keine Garantie aber über sinnvoll etc

Da hat ja mal jemand TDD so gar nicht verstanden…

bye
TT

import junit.framework.Assert;

import org.junit.Test;

public class SplitUnsplit
{
    @Test
    public void simpleCase() {
        Assert.assertEquals(unsplit(split("barfoo", 'r'), 'r'), "barfoo");
    }

    @Test
    public void noMatch() {
        Assert.assertEquals(unsplit(split("barfoo", 'z'), 'z'), "barfoo");
    }
     
    @Test
    public void withNewline() {
        Assert.assertEquals(unsplit(split("
", 'x'), 'x'), "
");
    }
     

    @Test
    public void withWhitespaces() {
        Assert.assertEquals(unsplit(split(" ", 'x'), 'x'), " ");
    }
     
    @Test
    public void withDelimiterAtTheEnd() {
        Assert.assertEquals(unsplit(split("barbar", 'r'), 'r'), "barbar");
    }
    
    private Object split(String string, char c)
    {
        return string+c;
    }
    private String unsplit(Object split, char c)
    {
        if ("barfoor".equals(split))
        {
            return "barfoo";
        }
        if ("barfooz".equals(split))
        {
            return "barfoo";
        }
        if ("
x".equals(split))
        {
            return "
";
        }
        if (" x".equals(split))
        {
            return " ";
        }
        if ("barbarr".equals(split))
        {
            return "barbar";
        }
        throw null;
    }

}

Alles grün :slight_smile:

(Meine Unsicherheit in bezug auf die Frage, ob TDD funktioniert, resultiert nicht zuletzt aus der Tatsache, dass ich schon genug Müll gesehen habe, um davon auszugehen, dass es Leute gibt, die das tatsächlich so oder so ähnlich lösen würden… :sick: )

das geht aber kürzer

public String split(String s, char c){
return s;
}

public String unsplit(String s, char c){
return s;
}

warum muss aus allem eine TDD Diskussion gemacht werden ?

Ist ne Aufgabe die ich mal gesehen habe, hier ist das JavaQuiz Thema, ergo hab ich es hier hingepostet…

TDD ist zumindest deiner Signatur nach doch das Thema Nummer 1 :smiley:

Mal im Ernst: Ging es nicht gerade um eine „sinnlose grün-mach-Implementierung“? Wenn nicht, hätte die Frage vielleicht elaboriert werden müssen :rolleyes:

[quote=Marco13]Ging es nicht gerade um eine “sinnlose grün-mach-Implementierung”?[/quote]IMHO ging es ehr im sinnlose Tests, das Verhalten des Codes nicht fixieren.

bye
TT

Was wird hier ausgegeben?

        System.out.println(randomString(-229985452) + " " + randomString(-147909649));
    }
    
    private static String randomString(int i) {
        Random ran = new Random(i);
        StringBuilder sb = new StringBuilder();
        while (true) {
            int k = ran.nextInt(27);
            if (k == 0)
                break;

            sb.append((char) ('`' + k));
        }

        return sb.toString();
    }```

[SPOILER]Keine echte Quiz-Frage, aber interessant genug für diesen Thread ;) [/SPOILER]

“Irgendein lesbarer Text” - aber welcher, da kann man natürlich nur raten…

Das nenn ich mal geschickt gewählte seeds!

Spannend, wie bist du denn darauf gekommen?

System.out.println(randomString(567442477) + "." + randomString(17685613) + "-" + randomString(16668795) + "." + randomString(392911));

oder auch

System.out.println(randomString(332945579) + " " + randomString(526527846));

:wink:

Das ist Joel Spolskys Lieblingsfrage auf SO :wink:

Vielleicht zu einfach, da zu viele Freiheitsgrade? Wie auch immer: Was muss man zwischen den //----Strichen einfügen, damit das zu einem compilerbaren Codestück wird? :

//-----------------------------------------------------------------------------
...
//-----------------------------------------------------------------------------

public class Temp
{
    public static void main(String[] args)
    {
        Example<?> example = null;
        ExampleA a = example.get();
        ExampleB b = example.get();
    }
}

EDIT: Als Klärung zur ersten Antwort: Es ist gemeint, das der gesamte Code oben, abgespeichert in einer Datei “Temp.java”, ohne Fehler compilierbar ist (aber natürlich nicht (“ohne Fehler”) ausführbar).

Ich beantworte einfach mal die Frage: “Wie muss die Klasse Example aussehen, damit das zu einem kompilierbaren Codestück wird?” - Andernfalls: das kompiliert doch - in Abhängigkeit davon, wie die Klassen Example, ExampleA und ExampleB, die im selben Package liegen, aussehen.

Example.java
[spoiler]public class Example<T> { public static <U> U get() { return null; } }

Das kompiliert nicht nur, sondern ist auch lauffähig.[/spoiler]