Größte u. kleinste Zahl von byte, short, int berechnen

Status
Nicht offen für weitere Antworten.

test123

Neues Mitglied
Hallo,
ich muss für die Schule ein kleines Java-Programm programmieren und komme einfach nicht mehr weiter.
Die Aufgabe lautet wie folgt:
"Ermittle mit einem Java-Programm die kleinste und größte Zahl, welche man mit folgenden Datentypen abspeichern kann: byte, short, int"

Mit int habe ich das auch mit nachstehendem Programm hinbekommen, ändere ich jedoch den Datentyp int in short oder byte um, lässt sich das Programm nicht mehr compilieren :( .
Code:
public class Rechnen6
{
	public static void main (String[] arg)
	{
		int zahl = 1;				//Testschritte
		int kleinste = zahl + 1;	//Suchanfangszahl
	
		while (kleinste > zahl) 
		{
			kleinste = kleinste + zahl;
		} 
		System.out.println("kleinste:" + kleinste);
	}
}

Es wäre nett, wenn mir jemand helfen könnte.
 

kopfsalat

Bekanntes Mitglied
Java ist sehr streng typisiert, d.h. wenn Du einem short-Wert, z.B. per
Code:
short kleinste = zahl + 1
einen neuen Wert zuweisen willst, sieht Java, dass die '1' ein int-Wert ist, und schmeißt eine Fehler-/Warnmeldung.
(possible loss of precision - also : "es ist wahrscheinlich, dass hier an die verschiedenen Wertebereiche der Datentypen nicht gedacht wurde")
In einem solchen Fall muss Du das Ergebnis 'casten', also Java explizit sagen, dass das von Dir so gewünscht ist.
Das geht z.B. per:
Code:
short kleinste = (short) (zahl + 1)
Ebenso bei kleinste = kleinste + zahl;
bzw. für byte.

Kleiner Sch(m)erz am Rande:
Du machst das sicher genau so, wie der Lehrer sich das vorgestellt hat, aber eine Alternative, die MIN und MAX-Werte aller Datentypen zu erhalten ist:
Code:
public class Rechnen6b
{
   public static void main (String[] arg)
   {
      System.out.println(Integer.MAX_VALUE);
      System.out.println(Integer.MIN_VALUE);
      System.out.println(Short.MAX_VALUE);
      System.out.println(Short.MIN_VALUE);
      System.out.println(Byte.MAX_VALUE);
      System.out.println(Byte.MIN_VALUE);
   }
}

(geht auch mit Long, Double, Float, also Datentypen, wo das Hochzählen Ewigkeiten dauert)
:wink:
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben