为什么在do…while循环中放入int x=nextInt();方法和if语句后循环不会执行呢?在视频课中验证两次输入密码是否相等怎么又会执行?
13759476771 发表于2020-06-15 09:19
这书上的拓展训练,题目是输入任意的自然数,然后从这个自然数开始相加,一直加到100。做出这段代码后,当我输入1是,跳出的不是5050,而是“请输入任意的自然数”这段话。当我把
int x=nextInt();方法搬到do…while语句外后,在输入1时,跳出的就是5050
我怎么也看不出这段代码的问题,只有请教你们!
你上传的代码,do{ }大括号里面的语句,前两行从控制台得到一个自然数并赋值给x(你在这里输入的是1),然后开始执行if语句,因为1<=100满足条件,所以执行if语句{ }这个大括号中的内容,即sum+=x;和x++;此时do{ }括号里面的语句全部执行完毕,sum=1,x=2。执行while()圆括号当中的判断语句,因为x=2满足x<=100,程序继续循环回到do{ }语句中的第一行,让你继续输入自然数,你再输进去一个数,假设是5,此时x就换又变成了5,所以会出现现在的情况。。。。
如果把System.out.println(“请输入任意自然数”);和x=SC.nextLong();拿出来,这两行代码就不在循环体内,当你输入1后,do{ }大括号内会不断循环sum+=x;和x++;最后满足条件跳出循环,这才是你想要的结果
stq20192019 发表于2020-06-15 14:11
你上传的代码,do{ }大括号里面的语句,前两行从控制台得到一个自然数并赋值给x(你在这里输入的是1),然后开始执行if语句,因为1<=100满足条件,所以执行if语句{ }这个大括号中的内容,即sum+=x;和x++;此时do{ }括号里面的语句全部执行完毕,sum=1,x=2。执行while()圆括号当中的判断语句,因为x=2满足x<=100,程序继续循环回到do{ }语句中的第一行,让你继续输入自然数,你再输进去一个数,假设是5,此时x就换又变成了5,所以会出现现在的情况。。。。
如果把System.out.println(“请输入任意自然数”);和x=SC.nextLong();拿出来,这两行代码就不在循环体内,当你输入1后,do{ }大括号内会不断循环sum+=x;和x++;最后满足条件跳出循环,这才是你想要的结果