您好!我刚刚接触javase面向对象,请问:
  假如在一个类中定义了两个方法,a();和b();
public class A{
 public void a(){     Scanner input=new Scanner(System.in);
     System.out.println("请输入1");
     if(input.nextInt()==1) b();
     
     System.out.println("这是方法a");
 } public void b(){     Scanner input=new Scanner(System.in);
     System.out.println("请输入2");
   if(input.nextInt()==2) b();
     
     System.out.println("这是方法b");
 }
}然后再创建一个带有main()方法的类
public class B{
 public static void main(String[] args)
     A p=new A();
     p.a();
 }
}然后在程序中反复输入1和2。当输入一个非1和2的数字时,该程序的结尾并不是输入"这是方法a"或这是方法b"。而是输出一堆"或这是方法b""或这是方法a".
如:
或这是方法b
或这是方法a
或这是方法b
或这是方法a
或这是方法b
或这是方法a  这说明两个方法发生了类似递归的互锁。有没有办法优化这个程序,即方法a调用方法b时结束方法a,而不是无穷的嵌套去,请前辈高人解答.

解决方案 »

  1.   

    public void b(){
        Scanner input=new Scanner(System.in);
        System.out.println("请输入2");
       if(input.nextInt()==2) a();
       
        System.out.println("这是方法b");
      

  2.   

    if(input.nextInt()==1){ 
       b();
       return;
    }
    if(input.nextInt()==2){ 
       a();
       return;
      

  3.   

    加return,它有两个含义,一个是返回值,另一个作用就是结束方法