package com.Damon_;public class Parity { public static void main(String[] args){ java.util.Scanner sco = new java.util.Scanner(System.in); int temp=sco.nextInt(); int num=1,sum1=0,sum2=0; do{ ? ?if(num%2==0){ ? ?sum1=sum1+num; ? ?num++; ? ?} ? ?else{ ? ? sum2=sum2+num; ? ?num++; ? ?} } while(num<=temp); System.out.println(temp+"以內(nèi)偶數(shù)和為"+sum1+"\n"+temp+"以內(nèi)奇數(shù)和為"+sum2); }}無聊給temp賦值了個987654321,結(jié)果:987654321以內(nèi)偶數(shù)和為2087916184987654321以內(nèi)奇數(shù)和為-1713223951為什么奇數(shù)和是負數(shù)?498746313 結(jié)果:498746313以內(nèi)偶數(shù)和為-2029931276498746313以內(nèi)奇數(shù)和為-1780558119都是負數(shù)。小一點的數(shù)好像都不會出現(xiàn)問題
1 回答
已采納

Coda
TA貢獻32條經(jīng)驗 獲得超5個贊
你計算的數(shù)據(jù)已經(jīng)int溢出了。
int?類型能夠表示的最大值為?2的31次方-1?的常量。? int?類型能夠表示的最小值為?-2的31次方?的常量。
在計算機中用二進制表示所有的信息,這個符號的區(qū)別就看首位。首位如果是 0,就是正的,1 就是負的。數(shù)值溢出就會出現(xiàn)這個現(xiàn)象。Java 中的 int 總共就 32 位,正數(shù)上限的情況首位也只能是 0,其他位都可以是 1(就是 2^31-1 的情況)。但是如果正數(shù)過大了,例如 2^31,計算機把首位變成 1,把它按照正常的方式輸出了,于是就成了負的。
添加回答
舉報
0/150
提交
取消