您好!我刚刚接触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,而不是无穷的嵌套去,请前辈高人解答.
假如在一个类中定义了两个方法,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,而不是无穷的嵌套去,请前辈高人解答.
Scanner input=new Scanner(System.in);
System.out.println("请输入2");
if(input.nextInt()==2) a();
System.out.println("这是方法b");
}
b();
return;
}
if(input.nextInt()==2){
a();
return;
}