不好意思,还想问学长几个问题~~
登录 | 论坛导航 -> 华新鲜事 -> 求学狮城 | 本帖共有 5 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:tonymmm (等级:2 - 初出茅庐,发帖:212) 发表:2003-08-27 22:06:27  楼主  关注此帖
不好意思,还想问学长几个问题~~
1。what is i after the following for loop?
for (int i=0;i<10;++i){
y+=i;
}
为什莫答案是undefined?不应该是10吗?
2。analyze the following fragment:
double sum=0;
double d=0;
while(d!=10.0){
d+=0.1;
sum+=sum+d;
}
答案:the program may not stop because of the phenomenon referred t as numerical inaccuracy for uperating with floating-pointing numbers.
为啥?不懂~~~~
3。analyze the following code:
boolean even=false;
if(even=true){
system.out.println(" it is even!");
}
写得有错吗?结果是什莫?
4。even=number%2==0
有这种写法么? 是什莫意思呢?计算机看到这个expression后又是怎样工作的?
多谢学长的帮助!!
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:我心为谁动 (等级:3 - 略知一二,发帖:515) 发表:2003-08-27 23:42:16  2楼 评分:
我的一点想法
1. the three parts of for loop
part I: initialization
part II: governing condition (for the loop to continue)
part III: post condition, i.e. what's going to happen after each loop
however, ++i requires that increase i by 1 before entering a loop, this conflict with part III definition.

2. because the way float(double) numbers are represented in computer, u will find some floating point computing "wrong": 0.5 + 0.2 /= 0.7.

3. if (even==true)
in C, you can write if (var = somevalue), which will assign somevalue to var and return true, but in java, this is not allowed.

4. even = number%2==0 <==> even = (number%2==0)
sequence of actions taken by computer:
(1) computer number%2
(2) compare the previous result and 0 and return comparision result as a boolean value
(3) assign the boolean value to even.

其实每个问题都有想对应的理论(或者说术语)来解释的, 不过我一时间都想不起来是什么, 希望你大概明白吧。
如有纰漏,敬请各位更正。
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:我心为谁动 (等级:3 - 略知一二,发帖:515) 发表:2003-08-28 00:12:40  3楼
我的一点想法1. the three parts of for loop part I: initialization part II: governing condition (for the loop to continue) part III: post condition, i.e. what's going to happen after each loop however, ++i requires that increase i by 1 before entering a loop, this conflict with part III definition. 2. because the way float(double) numbers are represented in computer, u will find some floating point computing "wrong": 0.5 + 0.2 /= 0.7. 3. if (even==true) in C, you can write if (var = somevalue), which will assign somevalue to var and return true, but in java, this is not allowed. 4. even = number%2==0 even = (number%2==0) sequence of actions taken by computer: (1) computer number%2 (2) compare the previous result and 0 and return comparision result as a boolean value (3) assign the boolean value to even. 其实每个问题都有想对应的理论(或者说术语)来解释的, 不过我一时间都想不起来是什么, 希望你大概明白吧。 如有纰漏,敬请各位更正。
第一个问题
我说错了,这样就没问题了
int i;
for (i=0; i<10; ++i) {
y += i;
}
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:tonymmm (等级:2 - 初出茅庐,发帖:212) 发表:2003-08-28 00:39:30  4楼
第一个问题我说错了,这样就没问题了 int i; for (i=0; i (more...)
嗯嗯,很有道理...
尤其是第一题的该法,真得太好了!谢谢谢谢!!!:)
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:duck (等级:7 - 出类拔萃,发帖:6205) 发表:2003-08-28 09:59:03  5楼 评分:
Come in please
1. Answer: During this while loop
for (int i=0;i<10;++i){
y+=i;
}
i is a local variable in this loop, which means i only exists within this loop. Before the loop and after the loop, i will no longer be existing in the whole program. So we may use this kind of variable many times in many while or for loops and defined it everytime. eg.
for (int i=0;i<10;++i){
y+=i;
}
int z = y;
for (int i=10; i>0; i--){
z-=i;
}

If you have a loop in another loop, you must use another variable if you have use i for the upper level, like the following example.

for (int i=0; i<10; i++)
{
for (int j = 10; j>0; j--)
{
z+=i*j;
}
}

A kind of stupid bug is mis-using i as j in the statements in the inner loop. The program may compile, but occur a runtime error, even infinite loop. You need to pay much attention of using them.


2. Answer: The program compiles well. But as the answer said, it will be an infinite loop. You can modify the program like
while (d<=10.0)
{
//codes to be added.
}

What's 我心为谁动 said is true, 0.2+0.5 does not equal to 0.7 in the program. You can test with some more cases. That's due to limitation of computer itself.

3. Answer: if (expression) { }. This expression must result in a boolean value. In java, = is used as assignment. == will result a boolean value, means whether the former equals to the latter.

4. Answer: the expression is correct. And here, even must be declared as a boolean.

boolean even;
even = (number%2 ==0);

In another words, if ( number%2==0) even=true; else even=false;
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
论坛导航 -> 华新鲜事 -> 求学狮城 | 返回上一页 | 本主题共有 5 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码