尊敬的版主及版内各位同好,你们好~!
我是一个JAVA新手,在学习《JAVA入门123》这本书时,第87页的一个例子引起了我的疑问,主要表现如下:
在这一章里,主要是讲转向语句及循环语句的,我记得以前看过的其他编程呢,循环语句中的前加加与后加加或前减减与后减减的运行次数是不一样的,但我在这一章里没有看到有方面的区别的论述,然后,在运行第87页最下面一段程序时,我有些疑惑,所以,就自己练习了这个程序,为了直观,我对书上的程序做了修改,代码如下:
public class NestingLoop {
public static void main(String[] args) {
int biggerThan = 10051005;
int n = 0;
int squareSum = 0;
while (squareSum <= biggerThan) {
n++;
squareSum = 0;
for (int i = 0;i <= n;i++) {
int squareValue = i + i;
squareSum = squareSum + squareValue;
System.out.println(n +"\t"+squareSum);
}
}
System.out.println("平方和大于"+biggerThan+"的最小整数值为:"+n);
}
}
运行结果是3170,这与书上的结果不同,为了验证运算结果是否正确,我又另写了一段程序(有点粗糙,汗~!),代码如下:
public class NweNestingLoop {
public static void main(String[] args) {
int n = 1;
for ( n=0;n<=3170;++n){
int squareSum = 0;
int squareValu = 0;
squareValu = n*n;
squareSum =squareSum + squareValu;
System.out.println(n +"\t"+squareSum);
}
}
奇怪,第90页的代码段输入结果确实是311,倒底是哪儿出了问题了?
附:第90页代码段:
public class UsingBreakInWhileTrue {
public static void main(String[] args) {
int biggerThan = 10051005;
int n = 0;
int squareSum = 0 ;
while (true) {
int square = n * n;
squareSum =squareSum +square;
if (squareSum > biggerThan) {
break;
}else {
n++;
}
}
System.out.println("平方和大于"+biggerThan + "的最小整数值为:"+n);
}
}作者: wangqing 时间: 2011-7-9 18:15
原来,第87页的int squareValue = i + i;处应当是int squareValue = i * i;,可是,那我第二段代码又错在哪儿了呢?作者: deepnighttwo 时间: 2011-7-11 11:37
原来,第87页的int squareValue = i + i;处应当是int squareValue = i * i;,可是,那我第二段代码又错在哪儿了呢?
wangqing 发表于 2011-7-9 18:15