Warum kann ich keine Bytes in Java addieren?

2 Antworten

Du musst es das Ergebnis explizit in byte casten. Java wandelt sicherheitshalber Ergebnisse in int um wenn zur Laufzeit der Wert nicht feststeht um eben keine Wertbereichsüberschreitung zu riskieren.

Danke, es hat funktioniert :D

byte SumByte = (byte) (aByte + bByte + cByte + dByte + eByte + fByte + gByte + hByte);
1

Begründung, beim addieren von  2 Byte variablen entsteht ein Integer Wert...

0

Wie gesagt, der Wertebereich von 128 wird nicht überschritten, das Ergebnis wäre 38 :/

0
@PlayerPro

Ok, kannst du mir dann verraten, welchen Wert jeweils die Variablen a bis h haben?

0
@RedKungFuMastr

Ja, das Ganze schaut folgendermaßen aus:

int a = 0xe;
int b = 030;
long c = 18L;
double d = 4.44e1;
double e = 55.5;
double f = 66e-1f;
float g = 7.7f;
char h = 'F';
Mir ist schon klar, dass ich einen Überlauf haben werde wenn ich alles addiere, aber warum scheitert das schon bei 14 + 24?
0
@RedKungFuMastr

Bei: 

byte SumByte = aByte + bByte;

=> Incompatible types. Required: byte, found: int

Die Fehlermeldung ist sinnlos, beide sind vom Typ byte

0

Kann man mit Math.random Variablen in Java in switches definieren?

Hi,

ich lerne gerade Java und verstehe nicht, warum das hier nicht geht? Kann mir jemand sagen, wie ich über randomNumber Variablen definieren kann? Es scheint fast so, als ginge das grundsätzlich nicht ...

public class Test {
  public static void main(String[] args) {
    byte randomNumber01;
    randomNumber01 = (byte)(Math.random() * 3 + 1);
  
    switch (randomNumber01) {
      case 1:
        String aatime = "I like apples ";
        break;
      case 2:
        String aatime = "I like tomatoes ";
        break;
      case 3:
        String aatime = "I like cheese ";
        break;
    }

    System.out.println(aatime);
  }
}
...zur Frage

Wie kann ich die Dependencies in Maven verstehen?

Also ich arbeite mit IntelliJ und meine Idee ist nun ein Java-Projekt auf Maven umzustellen. Leider funktioniert dies nicht.

Neben diesem Problem frage ich mich aber auch, wie ich die Dependencies verstehen kann. Also ich habe verstanden, dass sie zwischen verschiedenen Projekten fungieren. Also kann ich mit diesen auch auf ein anderes Java-Projekt zugreifen? Wenn ja, wie funktioniert das ?

Den Aufbau der Sprache kann ich relativ gut nachvollziehen. Danke für alle Antworten.

...zur Frage

"Getränkeautomat" mit Java Programmieren

Hallo Leute ich möchte mit Java einen Getränkeautomaten Programmieren. Jetzt hab ich eine Methode Wasser_kaufen, in BlueJ sieht sie folgendermaßen aus:

public void WasserKaufen(){

    Wasser=Wasser-1;

}

Im Automaten ist aber nur Platz für 10 Flaschen Wasser. Wenn ich aber diese Methode verwende dann kann man ja mehr kaufen! Also mein versuch das Problem zu beheben: eine if-Bedingung. Sieht bei mir folgendermaßen aus:

public void WasserKaufen(){

    Wasser=Wasser-1;
    if (Wasser=0)// meine Idee: wenn bei Wasser bereits nichts mehr drin ist,
    {Wasser=0;// kann nichts mehr gekauft werden. Toll wäre auch                     noch eine Meldung wie Wasser leer 
    }
}

Dann kommt allerdings von BlueJ die Fehlermeldung: incompatible types

Wie kann ich diesen Fehler beheben so, dass nicht mehr als 10 Flaschen gekauft werden können. Danke schon mal für eure Antworten nummer100

...zur Frage

Fehler in leichtem Javascript, wo ist er?

import java.util.Scanner;

public class Antwortscanner{ // Anfang Methoden public static void main (String [] args){ System.out.println("Wie alt bist du?"); Scanner input = new Scanner(System.in); String Alter = input.nextInt();

if (Alter <= 18)
{      
  System.out.println("Du bist aber Jung :^)");
  }
else{
  System.out.println("Alter Knacker");
}

} }

Fehlerquelle: Antwortscanner.java:8:33: error: incompatible types: int cannot be converted to String String Alter = input.nextInt(); ^ Antwortscanner.java:10:15: error: bad operand types for binary operator '<=' if (Alter <= 18) ^ first type: String second type: int

...zur Frage

Javaerror#2 Was bedeutet dieser Error und wie löse ich ihn auf?

Ich habe den Error

"Versuch3.java:98: error: method animeS in class Versuch3 cannot be applied to given types; animeS( ); ^ required: int found: no arguments reason: actual and formal argument lists differ in length 1 error"

und weiß nicht, was er bedeutet, hier die Codestelle:

public static void animeS(int x)

{
    System.out.println("----------------------------");
    System.out.println("--                        --");
    System.out.println("-- Erstelle Speicherstand --");
    System.out.println("-- Fortschritt: "+x+" %     ---");
    System.out.println("--                        --");
    System.out.println("----------------------------");
}

public static void anim1()
{
    animeS(15);
    System.currentTimeMillis();
    animeS(30);
    System.currentTimeMillis();
    animeS(40);
    System.currentTimeMillis();
    animeS(55);
    System.currentTimeMillis();
    animeS(75);
    System.currentTimeMillis();
    animeS(85);
    System.currentTimeMillis();
    animeS(95);
    System.currentTimeMillis();
    animeS(99);
    System.currentTimeMillis();
    animeS( );
}
...zur Frage

[Java] Screenshot vom server an client senden (via Sockets)?

Hallo. Ich möchte gerne ein screenshot von dem server zum client schicken.

Hier der Quellcode denn ich fürs machen des screenshots anwende:

BufferedImage image = null;
						try {
							image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
						} catch (HeadlessException | AWTException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						ImageIO.write(image, "png", new File("screenshot.png"));
						System.out.println("Made the shot!");
						sendScreenshot();

Und hier der code den ich fürs senden anwende (Server):

FileInputStream fis = null;
	    BufferedInputStream bis = null;
	    OutputStream os = null;
    File myFile = new File ("screenshot.png");

        byte [] mybytearray  = new byte [(int)myFile.length()];
        try {
			fis = new FileInputStream(myFile);
        bis = new BufferedInputStream(fis);
        bis.read(mybytearray,0,mybytearray.length);
        os = client.getOutputStream();
        System.out.println("Sending " + myFile.getName() + "(" + mybytearray.length + " bytes)");
        os.write(mybytearray,0,mybytearray.length);
        os.flush();
        System.out.println("Done.");
        
        } catch (IOException e) {
			e.printStackTrace();
		}

Und hier der quellcode für den Client:

int bytesRead;
	    int current = 0;
	    FileOutputStream fos = null;
	    BufferedOutputStream bos = null;
	    try {
	      // receive file
	      byte [] mybytearray  = new byte [FILE_SIZE];
	      InputStream is;
		try {
			is = client.getInputStream();
	      fos = new FileOutputStream(FILE_TO_RECEIVED);
	      bos = new BufferedOutputStream(fos);
	      bytesRead = is.read(mybytearray,0,mybytearray.length);
	      current = bytesRead;
          do {
 bytesRead = is.read(mybytearray, current, (mybytearray.length-current));
  if(bytesRead >= = 0) current += bytesRead;
 } while(current < FILE_SIZE);
  
  bos.write(mybytearray, 0 , current);
  bos.flush();
  System.out.println("File " + FILE_TO_RECEIVED +" downloaded (" + current + " bytes read)");
}
      finally {
      if (fos != null) fos.close();
      if (bos != null) bos.close();
      }
} catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  
  

Hier die 2 (globalen) Variablen die beim client angewendet werden:

public final static int FILE_SIZE = 6022386;
public final static String FILE_TO_RECEIVED = "shotFromServer.png";

Danke im voraus!

...zur Frage

Was möchtest Du wissen?