aufgabenverständnis

sh33p

Bekanntes Mitglied
Mir macht die etwas komische Aufgabenstellung zu schaffen..

"Betrachten Sie zunaechst die Ausgabe des folgenden Programmstuecks:

byte b = 100;
for (int i = 1; i <= 500; ++i) {
++b;
System.out.print(b + " ");
}

Schreiben Sie dann ein Programm, mit dem Sie nach dem kleinsten bzw. groessten
Wert des Datentyps 'short' SUCHEN koennen (vgl. auch java.lang.Short).

HINWEIS: Lesen Sie z.B. ein geeignetes x, dx und n ein und geben Sie die
naechsten Werte x + i*dx (i=1,2,...,n) aus."
das komische:

1.codestück wo immer wieder der werte bereich bis i <= 500 von byte überlaufen wird
2.nach den kleinsten und größten werten von short suchen:
Java:
short s = Short.MAX_VALUE;
 short s1 = Short.MIN_VALUE;
:rtfm:
3.
Lesen Sie z.B. ein geeignetes x, dx und n ein und geben Sie die
naechsten Werte x + i*dx (i=1,2,...,n) aus."

Was soll das nun?

Kann mir mal jemand den Zusammenhang erklären?:lol:
 

LP_SE

Aktives Mitglied
Wahrscheinlich so eine Anfängeraufgabe bei der die Ersteller meinen, man könne nicht lesen (mein jetzt die denken man erkennt nicht dass es MINVALUE u. MAXVALUE gibt). Gehe mal davon aus, dass das gemeint ist:
Mach eine Schleife und addier solange bis eine Exception kommt, der letzte ausgegebene Wert ist der Höchste. Das gleiche mit subtrahieren, für den Minimalwert
 

faetzminator

Gesperrter Benutzer
Nach "kleinstem und grösstem short suchen" (und dies ohne Short!?) würd ich so interpretieren (in der Ultrakurzversion):
Java:
short max, min = 0;
while ((max = min++) < min);
System.out.println(min + " und " + max);
verständlicher so:
[Java]short max, min = 0;
do {
max = min;
min++;
} while (max < min);
System.out.println(min + " und " + max);[/code]

Letzteres wär wohl einfach...
Java:
for (int i = 1; i <= n; i++) {
    System.out.println(x + i * dx);
}

Edit:
@LP_SE: Bei mir (Sun JVM) gibt's zumindest keine Exception, sondern einfach einen Überlauf.
 

LP_SE

Aktives Mitglied
wenn man shorts immer größer macht, fallen sie irgendwann aus dem Speicherbereich raus, eine gute IDE (eig fast jede, sogar java-editor) liefert dann ne fehlermeldung, wenn man dann davor alle ausgibt, ist die letzte Ausgabe die größte Zahl
 

faetzminator

Gesperrter Benutzer
Nimm meinen Code als Beispiel. Von wo soll nun meine IDE (in meinem Fall Eclipse) merken, dass wir hier einen Overflow kriegen? Und wenn auch, dann hat das überhaupt nichts mit der Runtime zu tun. Über was ich als Entwickler gewarnt werde, merkt der User auch nicht ;)
... auf alle Fälle verstehe ich immer noch nicht, wie du dies herausfinden willst. Zeig doch mal deinen "herausfindenden Code".
 

LP_SE

Aktives Mitglied
Ok, hab das gemeint:

Java:
public class Test {

    public static void main(String[] args) {
        short s =0;
        for(int i=0; i>-1; i++) {
            s++;
            System.out.println(s);
        }
    }

}

Hab jetzt gemerkt, dass das nur aufm Schulrechner ging, da dort irgendwas installiert is, was Speicheroverflow, endlosschleifen(ohne Pausen) und Überzählen von Grenzen in Java verhindert (ist behindert, geht die Hälfte nich richtig, wird wieder entfernt).
Bei mir fängts an nach dem Maximalwert im Minusbereich weiterzuzählen:

Code:
32761
32762
32763
32764
32765
32766
32767
-32768
-32767
-32766
 

faetzminator

Gesperrter Benutzer
Eben, und schau nun meinen simplen Code an. Er macht nichts anderes als deiner (ausser den Overflow zu überprüfen und nicht jede Zahl auszugeben...)
 

Oben