Datentypen String-Daten zu Byte-Zahlen konvertieren - Komme nicht weiter nach vielem versuchen :-/

  • Themenstarter Themenstarter phip1611
  • Beginndatum Beginndatum
P

phip1611

Gast
Hallo.
Ich möchte aus einem String[ 2 ] zwei byte Zahlen bekommen.
Habe viel versucht aber ich schaffe es einfach nicht.
Möchte ich die Zahlen addieren sagt mir Netbeans das int gefunden wurde und an anderer Stelle (bei einer bestimmten if-anweisung) will es mir klar machen, dass die byte(!) Variablen Strings seien.
Vielen Dank im voraus!

Mein Code:
Java:
String[] coordinates;
byte     x, y;

System.out.print( "Ihre Eingabe: " );
    coordinates = Input.string().split( ":" );
    // Als eingabe kommt etwas wie: "3:1", 2:3, 1:3, 3:3, 3:1, 2:2, ...

x = (byte) Integer.parseInt( coordinates[ 0 ] );
y = (byte) Integer.parseInt( coordinates[ 1 ] );
 
Das Problem liegt nicht an dem gelieferten Code (außer deine Input.string() methode liefert ungewünschten Wert)

Der Code sollte so nämlich einwandfrei funktionieren.

Der Schuh drückt also irgendwo anders.
 
Wenn du byte oder short Werte addierst, werden sie automatisch nach int ungewandelt.
Also wenn du schreibst
Java:
byte sum = x + y;
Macht der Java Compiler daraus
Java:
byte sum = (int)x +(int)y;

Und dann sagt dir der Compiler "possible loss of precision", weil du einer byte Variablen ein int zuweisen willst.
Deshalb musst du schreiben
Java:
byte sum = (byte)(x + y);
 
Zuletzt bearbeitet:
das glaub ich aber mal eher weniger ... vor allem wenn man X und Y als BYTE deklariert ...
hier macht eher Integer.parseInt() das problem und sollte durch Byte.parseByte() ersetzt werden
 
das glaub ich aber mal eher weniger ... vor allem wenn man X und Y als BYTE deklariert ...

Java:
public class Test {
    public static void main(String[] args) {
        byte x = 2;
        byte y = 3;
        byte z = x + y;
    }
}

Code:
C:\>javac Test.java
Test.java:5: error: possible loss of precision
        byte z = x + y;
                   ^
  required: byte
  found:    int
1 error
 
Ich nehme an, das es in Java keine eigene Byte-Arithmetik gibt. Gerechnet wird also immer mit int.
Die Fehlermeldung an sich ist dann natürlich recht seltsam.
 
wow ... also mir war bewusst das java eine normale zahl grundsätzlich als INT behandelt ... aber das bei einer arithmetischen operation mit zwei byte-werten trotzdem intern INT genutzt wird haut mich grad etwas aus den socken ...

ich stell mir gerade die riesen mengen an verschwendung vor die durch expliziten cast nach byte aufsummiert werden nur weil die VM intern mit INT arbeitet ...

klarer fall für den bug-tracker
 

Zurück
Oben