下列关于for循环和while循环的说法中哪个是正确的?( )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果
C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果
C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空
for(表达式1;条件;表达式2){}
如果子for没有了表达式1和表达式2是否就和while一样了呢?
因此,我认为选A
循环的关键在于循环条件,这两者都是一样的
不过也有印象似乎while有更多的功能
另外do while循环至少要执行一次,呵呵
outerTwo:for(int j=0;j<9;j++){
for(int k=0;k<9;k++){
if(i==2 && j==2 && k==2)break outerTwo;
}
}
}
outerTwo;while(i<9){
int j=0;
outerTwo;while(j<9){
int k=0;
while(k<9){
if(i==2 && j==2 && k==2)break outerTwo;
}
k++;
}
j++;
i++;
}
whil语句中 的
do while和和for不一样
outerone:while(i<9)
{
int j=0;
outerTwo:while(j<9)
{
int k=0;
while(k<9)
{
if(i==2 && j==2 && k==2)
{
System.out.println("i="+i+" j="+j+" k="+k);
break outerTwo;
}
k++;
}
j++;
}
i++;
}与下面这个效果是一样的
outerOne:for(int i=0;i<9;i++){
outerTwo:for(int j=0;j<9;j++){
for(int k=0;k<9;k++){
if(i==2 && j==2 && k==2)
{
System.out.println("i="+i+" j="+j+" k="+k);
break outerTwo;}
}
}
}
while(条件){}
for(表达式1;条件;表达式2){}
如果子for没有了表达式1和表达式2是否就和while一样了呢?
因此,我认为选A
----------------------------------------------------------------------------
能一样吗?
在很多情况下,如果一个循环可以明确它的最大循环次数的时候,最好用for。
而当一个循环体无法判定它的循环次数,这个时候最好用while。
并且while中的条件跟for中的条件从选择上准则就不一样。
我更倾向于B,个人看法。
pascal中起编译原理不一样,最初的语言中for通常是有一个步长的概念也就是一个计数器通过计数器的归0来判断循环的结束。但是随着c和c++java等高级语言的出现。for语句的功能越来越强大。逐渐减弱了for和while的区别使得for语句功能越来越强。
所以我个人觉得两者的差别应该是不大的。
C.两种循环任何时候都可替换 如果C正确,那A也正确了 当然不选C反例:for可以对循环进行初始化,while循环的初始化必须写在外面
所以单选的话应该是a
BD肯定错了
C的的话 在有些情况下真的是不可以替换的
list.add("a");
list.add("b");
for(int i = 0, size1 = list.size(), size = list.size(); i < size; ++i)
{
++size1;
System.out.println(size1);
}i,size1,size的作用域在while里面好象没有等价的
{
sum += i;
}int sum = 0;
int i = 0;while(i++ <= N) //下面的i值已经变化;
{
sum += i;
}象上面的情况你说不能替换也说的过去.
list.add("a");
list.add("b");
int i=0,size1 = list.size(),size=list.size();while(i<size){
++size1;
System.out.println(size1);
++i;
}
如果让程序死循环,或者说是动态等待,用while(thread.isAlive = true)()
那用for怎么来写呢?我只是提出个疑问,学习一下!
C: for(; 1 ;);
JAVA: for(; true ;);
for(;;)
{
}to hbwhwang:我说的是作用域
for和 while可以转换,但是任何地方?有些勉强。
for(;;;)
{}
和
do
{}
while()至少是有区别的。
waiting......学习一下。
List list = new ArrayList();
list.add("a");
list.add("b");
int i=0,size1 = list.size(),size=list.size();while(i<size){
++size1;
System.out.println(size1);
++i;
}
与for 中i, size1, size 的作用域不同~A。单从操作或者功能实现来说,一定是成立的,但如上,如果严格说不能转换,好象也有道理,毕竟作用域在编程中是不能忽视的
B。个人觉得有道理,没什么错误
C。同A。
D。肯定错误~如果写程序,建议该用while时就用while,该用for就用for,更易读,也更易想。不要遇到循环先写个for.
另外使用outerOne outerTwo的那种程序算不算违背结构化设计?同问~
b和d就不用争了,肯定错误的,b就不用说了,d中for(;;)这样的方式显然是可以的
while(true)这样也是可以的
我从数据库中得到个结果集ResultSet rs=......
然后我用while(rs.next())循环输出
请问for循环怎么替换?
期待中。
{ }
楼上,这样能行吗?
{ }
楼上,这样能行吗?
---这样不行,要这样
for(rs.next();!rs.eof;rs.next())
{
}
C.两种循环任何时候都可替换
绝对没错
=========================
错了还说这么大声呀? for循环 == while循环 + 初始化语句。
因某些情况语句可省,多的肯定可以变成少的,少的不一定能变成多的。故A对C错。B说的是一般情况,不是绝对语气,且符合实际情况,也算对吧。for(int i=0;i<9;i++){}
while(true) {}
是没有语法错误的,故D错!综上所述,单项选A,多项选AB。
for(;rs.next());;)
{ }
楼上,这样能行吗?
---这样不行,要这样
for(rs.next();!rs.eof;rs.next())
{
}
====================== for(;rs.next();)
{
}
这么有啥不行的!你那么写跟原来的执行步骤就不一样了呀,而且也没有必要加那判断吧
第一次循环就执行过一次rs.next()了如果写成 for(;rs.next();),第一次循环就报BOF错了~
目前想到最简单的替换就是上面我写的那样,for(rs.next();!rs.eof;rs.next())
大家都在就答案论题,是否这道题出的就有一点牵强?
如果硬要有个答案,我觉得还是A,C确实有点太绝对了。B.D肯定是错的。
下列关于for循环和while循环的说法中哪个是不正确的?( )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果
C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空
只考虑选项,不要管适用场合的话应该是AC吧
书上说的"它完全可以替代while语句"
C错
例如:while(1){}是正确的
而for(;1;){}是错误的
即是说for语句的判断条件须为boolean类型
具体请看我下面的例子
class TestFor2
{
public static void main(String[] args)
{
int i = 1, j = 1;
for(i = 1; i <= 10; i++)
{
if (i == 3)
continue;
i++;
System.out.print(i);
}
System.out.println();
while(j <= 10)
{
j++;
if(j == 3)
continue;
j++;
System.out.print(j);
}
}
}显示的结果为:
257911
357911请问这种情况下while的操作for怎么实现,同样for的操作while怎么实现???
然后我用while(rs.next())循环输出
请问for循环怎么替换?
谁告诉我这个怎么写
觉得for == while B太高深没看懂什么叫程序结果
AC
1.
i=1;
while(i<=10)
{
if(i!=3) //建议你在for中也这样写(用if),continue显得很突兀而且不适于多重循环(当然这儿是java区,你可以用continue label;但感觉更不好)
{System.out.print(++i);
}
i++;
} //循环完成后有可能还应该调整i的终值,但你写的例子正好不必调整了2.
for(;j<=10;) //这个就很简单了,只替换这一句就可以
{
j++;
if(j == 3)
continue;
j++;
System.out.print(j);
}
TO dr_lou():
while(rs.next) == for(;rs.next();) 这个我在上面已经说过了,不能这么写的 建议你找找~
多选:AC★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★