两个类A和B,A创建的对象可以计算两个整数的最大公约数,B创建的对象可以求最好公倍数,B类中成员变量是A类声明对象

package com.lst;

import java.util.Scanner;

public class Number {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

         Scanner input=new Scanner(System.in);
         int min;
         int max;
         System.out.print("请输入一个数:");
         min=input.nextInt();
         System.out.print("请输入另一个数:");
         max=input.nextInt();//取出控制台输入的信息 

         A a = new  A();
         a.f(min,max);
         B b=new B();
         b.g(min,max);   
         System.out.println(a.f(min,max));
         System.out.println(b.g(min,max));  

    }



    public static class A{ //求最大公约数

        public int f(int max ,int min){

        if (max < min) {// 保证m>n,若m
            int temp = max;  
            max= min;  
            min = temp;  
        }  
        if (max % min== 0) {// 若余数为0,返回最大公约数  
            return min;  
        } else { // 否则,进行递归,把n赋给m,把余数赋给n  
            return f(min, max % min);  
        }  

    }}

    public  static class B{

        A a=new A(); //B类中的成员变量是A中类声明对象

        public int g(int min,int max){
        return min*max/a.f(max,min);
        }
        }
    } 

/*
 * No enclosing instance of type Number is accessible.
 *  Must qualify the allocation with an enclosing instance of type Number (e.g. x.new A()
 *   where x is an instance of Number).
 * 原来我写的内部类是动态的,
 * 也就是开头以public class开头
 * 。而主程序是public static class main。
 * 在Java中,类中的静态方法不能直接调用动态方法。
 * 只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法
 * 。所以在不做其他变动的情况下,最简单的解决办法是将public class改为public static class. 
 */


你可能感兴趣的:(java菜鸟之路)