Frage von Lukascanhelp, 110

[JAVA] Wieso wird ein "long" in einem "if" immer 0?

Hallo,

wenn ich in Java eine if-else Bedingung habe und darin einen long berechne, wieso wird dieser immer Null?

if(...) {
   long a = ....
}

Gruß

Antwort
von Belaro, 38

Ich glaube, du redst davon:

if(...) {
long a = ...;
}

System.out.println(a); //Output: 0

Der Punkt ist, dass die Variable a in der if-Schleife erstellt worden ist. Die Variable a ist dann in der if-Schleife und auch NUR in der if-Schleife definiert worden. Warum? Wegen dem Semikolon. Das begrenzt sozusagen den Bereich der Variable, wo sie bekannt ist. Ausserhalb des Semikolons weiss niemand von der Variablen a bzw. weiss alles ausserhalb der if-Schleife nicht, was überhaupt in der if-Schleife abgeht.

public void ichSollteSchlafenGehen() {
//kennt a nicht

if(...) {
long a = ...;

//kennt a hier
}

//kennt a nicht

Wiederum weiss die if-Schleife alles aussen herum.

public void ichSollteJetztEchtMalSchlafenGehen() {
long a = 0;

if(...) {
a = 5; //hier kennt if-Schleife die Variable a

}
}

Ich hoffe mal, es ist das gewesen.

Kommentar von Lukascanhelp ,

Habe am Anfang einen "static long y" definiert

Kommentar von Lukascanhelp ,
static long y; //ODER long y = 0;
long x = Von Tastatureingabe;

if(...) {
  y = x/100000;
}

System.out.println(y);
Kommentar von Belaro ,

Du redest von Null und nicht 0, richtig?

Wenn du "static long y;" hast, dann ist die if Bedingung falsch und wird somit nicht gesetzt.
Wenn du aber "long y = 0;" hast, dann muss es mindestens 0 anzeigen aber null wird es nie anzeigen.

Antwort
von triopasi, 78

Zeig mal deinen Code, du machst was ganz anderes einfach falsch... 

Kommentar von Lukascanhelp ,
long x = Eingabe in die cmd

if(...) {
   long y=x;
}
Kommentar von triopasi ,

long ist eine Ganzzahl, klar kommt da immer 0 raus, wenn x < 10Mio ist..

Kommentar von Lukascanhelp ,

Wie kann ich das dann machen? 

Ich muss zb y=x/10^16 rechnen

Kommentar von triopasi ,

Warum musst du das rechnen? Und was willst du rausbekommen? Mit Nachkommastellen oder was?

Kommentar von Lukascanhelp ,

Ich habe eine Eingabe, zb 123

Es soll die Quersumme berechnet werden, jedoch nicht wie gewöhnlich, sondern die ersteZahl-zweiteZahl+dritteZahl-vierteZahl

usw

Kommentar von triopasi ,

1. Das ist dann nicht die Quersumme, aber okay.

2. Und warum teilst du dann durch so ne riesige Zahl?

Kommentar von Lukascanhelp ,

Die Eingabe ist sehr groß und um jede "Stelle" der Zahl zu erreichen habe ich zb (x/1000000000)-(x/100000000)+(x/10000000) usw

Kommentar von triopasi ,

Dann teilst du einfach durch eine zu große Zahl.. bzw. dein Algorithmus ist falsch..

Kommentar von Lukascanhelp ,

wie kann ich sonst rechnen ersteZiffer-zweiteZiffer+dritteZiffer usw

Kommentar von triopasi ,

Einfachste Lösung wäre die Eingabezahl als String zu nehmen, und dann immer zahlAlsSting[index] als int zu casten, und auf die Summe aufaddieren...

Kommentar von Lukascanhelp ,

Da versteh ich nur Bahnhof

Kommentar von triopasi ,
String zahl = "123456";
int summer = 0;

foreach(zeichen in zahl)
summe += Parse.Int32(zeichen);

Also das wäre n Beispiel für die "normale" Quersumme.. Ist auch kein vollständig richtiger Java-Code, aber sollte ein guter Denkanstoß sein.

Kommentar von Lukascanhelp ,

Aber die Eingabe bleibt ein long 

Kommentar von triopasi ,

Nein, ein String..

Antwort
von Star4Fun, 3

Was möchtest du eigentlich programmieren?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten