请问各位大虾,这个小例子运行的结果为什么是0呢?
有点不明白!public class DoWhileDemo
{
public static void main(String args[])
{
int i,sum;
sum=0;
i=1;
do
{
sum+=i;
i+=2;
}
while(i>0);
System.out.println("sum="+sum);
}
}
有点不明白!public class DoWhileDemo
{
public static void main(String args[])
{
int i,sum;
sum=0;
i=1;
do
{
sum+=i;
i+=2;
}
while(i>0);
System.out.println("sum="+sum);
}
}
解决方案 »
- 求教一个RMI-IIOP的参数问题
- 我们的一个 javacc 程序 遇到了问题 希望各位大侠 指点批评一下
- 求教:下面java中网络流的操作出现的问题。
- 怎么将Java中的.class文件转变成可执行性文件?
- 请问java中的String和c++、C#等的有何不同
- 一个关于Sleep的小问题,急!在线等!
- 那位兄台能指点下 那个网站能大量下载好的JAVA源程序
- paint()方法的问题,想了很久
- java.util.Hashtable有没有排序功能?用element逐个取hashtable的key怎么是乱序的?
- 多个String 怎样合并?菜鸟马上给分!
- 可以用超链接直接打开excel文件,并正常显示么?
- 类中如何给变量赋值?
你的是个死循环最后cpu抗不住了,给你个0应付一下
当i的值超过int 所能表示的最大正值时,便会溢出;这时,i 为负值,程序输出结果。
至于,为什么sum 的值会是0 ,我想也应该从这方面考虑吧。
hjd1056() 说的正确
i= -2147483647
i:
十进制:2147483647
二进制:0111,1111,1111,1111,1111,1111,1111,1111
sum:
十进制:-2147483647
二进制:1000,0000,0000,0000,0000,0000,0000,0001
i+2后,其值溢出,sum=sum+i
所以sum为0;对你的程序改进了一下:public class C{
public static void bin(int num) {
int size = 32;
char bits[] = new char[size];
for (int i = size-1; i >= 0; --i) {
bits[i] = (num & 1) == 0 ? '0' : '1';
num >>>= 1;
}
for(int i = 0; i < bits.length; i++){
if((i%4 == 0) && (i!=0)) {
System.out.print(",");
}
System.out.print(bits[i]);
}
System.out.println();
} public static void main(String[] args) {
int i,sum;
sum=0;
i=1;
int d = 2;
do
{
sum+=i;
i += d;
if((i <= Integer.MAX_VALUE) && (i > Integer.MAX_VALUE - d)) {
System.out.println("i:");
System.out.println("十进制:" + i);
System.out.print("二进制:");
bin(i);
System.out.println("sum:");
System.out.println("十进制:" + sum);
System.out.print("二进制:");
bin(sum);
}
}
while(i>0);
System.out.println("最后的sum:");
System.out.println("十进制:" + sum);
System.out.print("二进制:");
bin(sum);
}
}bin用来打印二进制
d是i递增值
楼主可以试试.
{
public static void main(String args[])
{
int i,sum;
sum=0;
i=1;
do
{
sum+=i;
i+=2;
}
while(i>0);
System.out.println("sum="+sum);
}
}
while(i>0)你把他设一个大于0的值吧 这个因该是你自己练练手写的吧;
把
do
{
}
while(i<10)
{
}这样 就可以啦, 我觉得 zephyr_cc() 你写的这个 不适合现在的楼主看; 简化点比较好
拙见。
从而停下来但是恰巧这个时候sum为零(这种概率非常小)
所以打印的是零