跪求各位大侠,while()语句,当判断满足条件,执行完执行体之后,还会继续循环吗,以下的例子会循环几次

假设输入的整数a为8,b为12
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;
}
}

while( )的循环结构,就是满足条件才循环,不满足就不循环了。
如果一开始就不满足,则循环体一次都不执行。
你的循环体中有一句 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。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-22
第一次运行后 x=8 y= 4
第二次运行后 x=4 y=0
第三次 不满足条件 跳出
所以执行两次
相似回答