Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 00:00

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[java]Datentyp Byte Fehler beim subtrahieren

Discussion on [java]Datentyp Byte Fehler beim subtrahieren within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
[java]Datentyp Byte Fehler beim subtrahieren

Hallo,

Ich hab mal eine frage zu dem kleinen Java Schnipsel.

Code:
...
byte i = 1;

while(i<=5){
System.out.println(i);
i = i - 1;
}
...
Mir wird dort aber ein Fehler ausgeworfen in eingabeaufforderung.
Selbst wenn ich statt -1 eine Variable mit Byte deklariere und diese dann in die Schleife einfüge will es nicht klappen.

Den Fehler kann ich gerade nicht sagen, da ich unterwegs bin. Ich weiß nur das er diesen Fehler am Minus Zeichen angibt und meint das ich Byte nutze aber der Compiler ein integer findet.

Wenn ich i den Datentyp integer zuweise, klappt alles.

Warum klappt es aber nicht mit den Datentyp Byte?

Liebe Grüße
DasPrinzip. is offline  
Old 09/12/2013, 15:28   #2
 
South-Park's Avatar
 
elite*gold: 65
Join Date: Apr 2010
Posts: 2,651
Received Thanks: 509
weil java intern mit int arbeitet und so aus deinem i - 1 intern ein int gemacht wird. und da int größer ist als byte, kommt der Fehler... Musst also auf Byte casten oder einfach i--; bzw --i; schreiben

Und nur als Anmerkung: Das da oben is ne Endlosschleife, i ist eins und du ziehst immer eins ab, wie solls da je größer wie 5 werden?
South-Park is offline  
Old 09/12/2013, 15:35   #3


 
DasPrinzip.'s Avatar
 
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
[java]Datentyp Byte Fehler beim subtrahieren

Casten habe ich auch versucht gibt mir trotzdem einen Fehler aus, egal ob (byte(1)) oder byte(1).
Das es eine endlosschleife ist, ist mir bewusst es geht mir um den Fehler der da vorhanden ist rein aus Interesse

1-- hab ich auch versucht trotzdem gleicher Fehler
Wird dann mit --1 wahrscheinlich das gleiche sein.

Und außerdem hatte ich Ja versucht mit byte ab = 1; und dann in der Schleife die 1 mit ab ersetzt. Kein Erfolg.
DasPrinzip. is offline  
Old 09/12/2013, 15:37   #4
 
South-Park's Avatar
 
elite*gold: 65
Join Date: Apr 2010
Posts: 2,651
Received Thanks: 509
DAS ist kein casten

Code:
 byte i = 1;
i = (byte) (i - 1);
DAS ist casten

aber trz, will man nur eins abzeihen bzw dazuzählen, benutzt man i++, ++i, i-- oder --i, je nach Anwendungsfall

Edit:
Code:
public class Cast {

    private static byte b = 1;

    public static void main(String[] args) {
        for (;;) {
            b++;
            b--;
            --b;
            ++b;
        }

    }
}
Das kompiliert bei mir ohne Probleme... 1-- macht auch keinen Sinn, du musst es an die Variable machen.... Solltest vllt ab und zu die Fehlermeldungen auch mal lesen :P
South-Park is offline  
Old 09/12/2013, 16:17   #5
 
elite*gold: 0
Join Date: Jun 2012
Posts: 8
Received Thanks: 3
Hi,
also was den Fehler angeht, der ist wie schon oben erwähnt durch richtiges casten zu beheben.

Jedoch schreib ich trozdem nochmal was dazu um klarzustellen das durch die while-schleife keine Endlosschleife entsteht. Da byte nur ein Zahlenbereich von -128 bis 127 erfasst erfolgt, wenn man -128 dekrementiert, ein underflow und i wird zu 127. => i ist größer als 5 und die while schleife bricht ab.
DaKku0815 is offline  
Old 09/12/2013, 16:31   #6
 
South-Park's Avatar
 
elite*gold: 65
Join Date: Apr 2010
Posts: 2,651
Received Thanks: 509
Das wäre dann aber auch bei short, int , long irgendwann der Fall...
South-Park is offline  
Old 09/12/2013, 18:25   #7
 
elite*gold: 0
Join Date: Jun 2012
Posts: 8
Received Thanks: 3
Genau, ich hab ja auch nicht behauptet das dies nur bei byte auftritt, dies war aber das Beispiel und da hat sich das eben angeboten.
BTW: Ne Möglichkeit den over- bzw. underflow zu umgehen wäre BigInteger, jedoch ist dies kein primitiver Datentyp und die standard arithmetischen Operationen funktionieren nicht.
DaKku0815 is offline  
Reply


Similar Threads Similar Threads
Java 32 Bit oder 64 Bit- Fehler über Fehler
07/18/2012 - Technical Support - 0 Replies
Also, ich habe da ein Problem mit Java, bzw mit Minecraft und der Zusammenarbeit der beiden. Wenn ich mir Java ganz normal auf der Seite runterlade, bekomme ich ja die 32 Bit Version. In Minecraft habe ich allerdings immer wieder Hänger und im Optionen-Menü bekomme ich gesagt dass die 32 Bit Java-Version mit meinem 64 Bit System nicht ganz zusammenpasst, weswegen es da im Spiel einige Probleme geben könnte. Dann habe ich die 32 Bit Version von Java deinstalliert und manuell die 64 Bit...
Java - Byte Array in BufferedImage funktioniert nicht
02/08/2012 - General Coding - 0 Replies
hallo ich versuche schon seit einiger zeit ein byte in ein BufferedImage zu konvertieren aber ich bekomme immer eine IllegalArgumentException weil ImageIO.read(new ByteArrayInputStream(b) null wiedergibt das byte array wird über das internet via socket erhalten und in das byte gespeichert. hier nochmal der ganze code der betroffenen stellen: hier ist der server der die anfrage sendet und das bild empfängt:
Fehler beim Installieren sämtlicher Java Dateien
09/21/2011 - Technical Support - 11 Replies
Heyho Sup. Habe ein Problem. Wenn ich mir jetzt Java runterlade(Download von Java für Windows) kriege ich einen Error Namens "Java(TM) Platform SE binary funktioniert nicht mehr"! Habe auch schon gegooglet, aber nichts gefunden.. Weiß wer ne Lösung? Sollte noch was hinzufügen: Deinstalliert habe ich es 3-4x, alles runtergehauen. Neuinstalliert usw, nix funzt. Btw, Alle anderen Installer/Programme funzen.
Fehler : java.net.socet.exception:connection reset fehler bitte um hilfe
12/21/2010 - Minecraft - 9 Replies
Hab denn java.net.socet.exception:connection reset fehler immer und immer wieder :( könnt ihr mir dabei vill helfen? :) LG DieVerrückteMango =)



All times are GMT +1. The time now is 00:00.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.