跪求各位大侠,while()语句,当判断满足条件,执行完执行体之后,还会继续循环吗,以下的例子会循环几次
import java.util.*;
public class B{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入一个整数");
int a = s.nextInt();
System.out.println("请再输入一个整数");
int b = s.nextInt();
def cd = new def();
int m = cd.def(a,b);
int n = a*b/m;
System.out.println("最大公约数"+m);
System.out.println("最小公倍数"+n);
}
}
class def{
public int def(int x , int y){
int t;
if(x<y){
t = x;
x = y;
y = t;
}
while(y!=0){
if(x==y)
return x;
else{
int k = x%y;
x = y;
y = k;
}
return x;
}
return x;
}
} 展开
如果一开始就不满足,则循环体一次都不执行。
你的循环体中有一句 return x;
这样好象造成:循环体无论如何最多也只能执行一次了!
按你的函数“功能”,应该把循环体中的那句(if ... else 之后的return)去掉。
嗯嗯,同意把if...else之后的return去掉,要是把return去掉后会继续循环下去吗?while()语句可以循环是吗?不用重复调用吧
你是刚开始学编程吧。
你这是求两个整数的最大公约数嘛,if 语句之后的那个 return本来就不应该用的。
用了那一句,就不能得到正确结果了。
while( )是先判断循环条件,再按“判断结果”决定是否执行循环。
如果条件一开始就是false,循环体一次都不执行。
循环体按语句流程执行完后,会再一次对循环条件进行判断,
(执行流程中,执行到了强制跳出循环体的语句除外)
条件为true继续执行,为false就不再执行循环体了。
还有一个就是,函数尽量采用“单出口”的流程,这样逻辑不会显得“乱”。
你的那个局部变量k其实也是多余的,完全可以用已经定义好了的变量 t 。
我觉得这样写比较好(当然,实际还应该在while()前判断y是否小于1,否则不正确):
public int def(int x , int y){
int t;
if(x<y){
t = x;
x = y;
y = t;
}
while(y!=0){
if(x==y) break;
else{
t = x % y;
x = y;
y = t;
}
}
return x;
}
你的这个例子中,调用这个函数的执行流程就是:
调用时传入参数a=8,b=12,这样x=8,y=12。
if条件为true,交换变量的值,x=12,y=8。
while( ) 条件为true,进入循环体,
第一轮循环,if条件为false,执行else部分,x=8, y = 4
while( ) 条件为true,进行第二轮循环。if条件为false,执行else部分,x=4, y = 0。
这时while( ) 条件为 false了,不再进入循环体。
然后返回x 的值,就是4了。
这样,求得8和12的最大公约数为4。