2017-08-25 2 views
-1
public static void main(String args[]){ 

    Scanner s = new Scanner(System.in); 
    int x; 
    int y; 
    int z = 0; 
    x = s.nextInt(); 
    y = s.nextInt(); 

    while(y != 0){ 
     z += x; 
     y--; 
    } 
    System.out.println(z); 
} 

Das ist alles. Dieser Code berechnet x * y, aber nicht *. Es war nur eine (Aufgabe?) Jemand hat mir gesagt. Und meine Frage ist, warum dies mit negativen Zahlen arbeitet. Dass x negativ sein kann, ist offensichtlich, aber warum kann es sein?Ich verstehe nicht, warum dies funktioniert

Edit: Ich habe diesen Code selbst geschrieben, damit ich weiß, warum es ohne * funktioniert. Das ist nicht die Frage. Ich kann 5 für x und -5 für y eingeben und ich bekomme -25. Aber warum? Jedes Mal, wenn er ein weiteres Mal hinzufügt, geht x zu z y 1 nach unten. Aber nach dem 5. Mal hört es auf.

+5

flash news: '2 * 3 = 2 + 2 + 2';) – alfasin

+0

cuz' x * y' -> 'x mal y'; wie 2 * 3 === 2 + 2 + 2 – DanilGholtsman

+0

es würde erheblich verbessern Sie sind Frage, wenn Sie uns sagten, welche Eingaben Sie für x, y und z verwenden. Es würde Ihren Code erheblich verbessern, wenn Sie Ihren Variablen aussagekräftige Namen geben würden –

Antwort

1

Wenn Sie das „z“ Druck im Inneren der während setzen Sie verstehen.

Dieser Code führt zu einem Überlauf. Erreiche den Maximalwert, den der int erlaubt und verringere ihn von dort wieder

+0

Ich habe es getan. Ich verstehe was du meinst. Aber warum stoppt meine Schleife bei der richtigen Antwort? Y erreicht nie 0. – Konschi01

+0

@ Konschi01 'y' wird schließlich erreichen" 0 ", aber der lange Weg herum. Sobald es den minimal möglichen Wert erreicht hat, wird es bis zu max int zurücklaufen und weiter dekrementieren, bis es "0" erreicht. – azurefrog

+0

Siehe https://stackoverflow.com/questions/3001836/how-does-java-handle-integer-underflows-and-overflows-and-how-would-you-check-fo – azurefrog

0

Dieser Code macht mehrere Summen. Also kann es die Zahl 2, 3 mal addieren, und das ist, wie es 2 * 3 tut.

Die y kann, weil das negativ sein, wenn sieht! = Als 0 ist, nicht < als 0

Verwandte Themen