java方法和类的例题,包含递归、类的引用、计算圆的面积、计算1-100之间所有自然数的和等等等等等等等等

这次是关于java面向对象的方法和类的一些练习

 

 1.编写一个数组的工具类

package J2;

//编写一个数组的工具类
public class ArrayUtil {
    public static void main(String[] args) {
        int[] num = new int[10];
        ArrayUtil a1 = new ArrayUtil();
        a1.value(num);
        a1.print(num);
        System.out.println("* * * *");
        a1.Max(num);
        a1.Min(num);
        a1.aver(num, a1);
        a1.sort(num);
        a1.print(num);
        System.out.println("* * * *");
        a1.copy(num);
        System.out.println("* * * *");
        a1.reversal(num);
        a1.print(num);
        System.out.println();
    }

    // 数组随机数赋值,赋值范围在0-100
    public void value(int[] num) {
        for (int i = 0; i < num.length; i++) {
            num[i] = (int) (Math.random() * 90 + 10);
        }
        System.out.println();
    }

    // 求数组的最大值
    public void Max(int[] num) {
        int Maxnum = -1;
        for (int i = 0; i < num.length; i++) {
            if (Maxnum < num[i]) {
                Maxnum = num[i];
            }
        }
        System.out.println("数组的最大值为" + Maxnum);
    }

    // 求数组的最小值
    public void Min(int[] num) {
        int Minnum = 101;
        for (int i = 0; i < num.length; i++) {
            if (Minnum > num[i]) {
                Minnum = num[i];
            }
        }
        System.out.println("数组的最大值为" + Minnum);
    }

    // 求数组的总和
    public int sum(int[] num) {
        int sum = 0;
        for (int i = 0; i < num.length; i++) {
            sum += num[i];
        }
        System.out.println("数组的总和为" + sum);
        return sum;
    }

    // 求数组的平均值
    public void aver(int[] num, ArrayUtil a1) {
        int aver = 0;
        aver = a1.sum(num) / (num.length);
        System.out.println(" 数组的平均值为" + aver);
    }

    // 反转数组
    public void reversal(int[] num) {
        for (int i = 0; i < num.length / 2; i++) {
            int temp = num[i];
            num[i] = num[num.length - i - 1];
            num[num.length - i - 1] = temp;
        }
    }

    // 复制数组
    public void copy(int[] num) {
        int[] num1 = new int[num.length];
        for (int i = 0; i < num1.length; i++) {
            num1[i] = num[i];
        }
        for (int j = 0; j < num1.length; j++) {
            System.out.print(num1[j] + "\t");
        }
    }

    // 数组排序
    public void sort(int[] num) {
        for (int i = 0; i < num.length - 1; i++) {
            for (int j = 0; j < num.length - i - 1; j++) {
                if (num[j] > num[j + 1]) {
                    int temp = num[j];
                    num[j] = num[j + 1];
                    num[j + 1] = temp;
                }
            }
        }
    }

    // 遍历数组
    public void print(int[] num) {
        for (int index = 0; index < num.length; index++) {
            System.out.print(num[index] + "\t");
        }
    }
}

2.利用面向对象的编程方法,设计类Circle计算圆的面积

package J2;
//利用面向对象的编程方法,设计类Circle计算圆的面积
public class CircleTest {
    public static void main(String[] args) {
        Circle r1 = new Circle();
        r1.r = 4;
        //方法一
        r1.mianji();
        //方法二
        double r2 = r1.mianji1();
        System.out.println("面积为" + r2);
    }
}
class Circle{
    double r;
    //方法一
    public void mianji() {
        double mianji = Math.PI * r * r;
        System.out.println("面积为" + mianji);
    }
    //方法二
    public double mianji1() {
        double mianji1 = Math.PI * r * r;
        return mianji1;
    }
}

3.

编写教师类和学生类,并通过测试类创建对象进行测试

Student类                                   Teacher类

属性:                                         属性:

name:String                                 name:String

age:int                                          age:int

major:String                                 teachAge:int

interests:String                             course:String

方法:say()                                  方法:say()

返回学生的个人信息                     输出教师的个人信息

package J2;
/*
 * 编写教师类和学生类,并通过测试类创建对象进行测试
Student类               Teacher类
属性:                    属性:
name:String              name:String
age:int                  age:int
major:String             teachAge:int
interests:String         course:String
方法:say()               方法:say()
返回学生的个人信息          输出教师的个人信息
 */
public class ClassTest {
    public static void main(String[] args) {
        Student st1 = new Student();
        st1.age = 18;
        st1.intersts = "睡觉";
        st1.name = "yolo";
        st1.major = "语文";
        String stu = st1.say();
        System.out.println(stu);
        Teacher th1 = new Teacher();
        th1.age = 30;
        th1.course = "数学";
        th1.name = "moon";
        th1.teacherAge = 2;
        th1.say(); 
    }
}
class Student{
    String name;
    int age;
    String major;
    String intersts;
    public String say() {
        String student = "学生姓名为" + name + " 年龄为" + age +
        " 专业为" + major + " 兴趣为" + intersts;
        return student; 
    }
}
class Teacher{
    String name;
    int age;
    int teacherAge;
    String course;
    public void say() {
        System.out.println("老师的姓名为" + name + " 年龄为" + age +
        " 教龄为" + teacherAge + " 教授的课程为" + course);
    }
}

4.

创建一个Person类,其定义如下:

要求:(1)创建Person类的对象,设置该对象的name、name:String

age和sex属性,调用study方法,输出字符串age:in “studying”,

调用showAge()方法显示age值,调用Osex:int addAge()方法给对象的age属性值增加2岁.

(2)创建第二个对象,执行上述操作,体会同一个类的+addAge(int i):int 不同对象之间的关系。

Person

name:String

age:int

sex:int

+study():void

+showAge():void

+addAge(int i):int

package J2;
/*1.创建一个Person类,其定义如下:
public class ClassTest1 {
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.age = 18;
        p1.name = "yolo";
        p1.sex = 0;
        p1.study();
        p1.showAge();
        p1.addAge(2);
        Person p2 = new Person();
        p2.showAge();
        p2.study();
        p2.addAge(3);
    }
}
class Person{
    String name;
    int age;
    /*
     * sex = 1 为男
     * sex = 2 为女
     */
    int sex;
    public void study() {
        System.out.println("studying");
    }
    public void showAge() {
        System.out.println("年龄" + age);
    }
    public void addAge(int i) {
        age += i;
        System.out.println(age);
    }
}

5.

(1)编写程序,声明一个method方法,在方法中打印一个10*8的*型矩形,在main方法中调用该方法。

(2) 修改上一个程序,在method方法中,除打印一个10*8的*型矩形外,再计算该矩形的面积,并将其作为方法返回值。在main方法中调用该方法,接收返回的面积值并打印。

(3)修改上一个程序,在method方法提供m和n两个参数,方法中打印一个m*n的*型矩形,

并计算该矩形的面积,将其作为方法返回值。在main方法中调用该方法,接收返回的面积值并打印。

package J2;
public class ClassTest2 {
    public static void main(String[] args) {
        ClassTest2 t1 = new ClassTest2();
        //3.1
        //t1.method();
        //3.2
        // int t = t1.method();
        // System.out.println(t);
        //3.3
        int t2 = t1.method(3, 4);
        System.out.println(t2);
    }
    //3.1
    // public void method() {
    //     for (int i = 0; i < 10; i++) {
    //         for (int j = 0; j < 8; j++) {
    //             System.out.print("*  ");
    //         }
    //         System.out.println();
    //     }
    // }
    //3.2
        // public int method() {
        //    for (int i = 0; i < 10; i++) {
        //        for (int j = 0; j < 8; j++) {
        //            System.out.print("*  ");
        //         }
        //         System.out.println();
        //     }
        //     return 10 * 8;
        // }
    //3.3
    public int method(int m,int n) {
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print("*  ");
             }
             System.out.println();
         }
         return m * n;
     }
}

6.

对象数组题目:

定义类Student1,包含三个属性:学号number(int),年级state(int),成绩score(int)。

创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。

问题一:打印出3年级(state值为3)的学生信息。

问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息

提示:

1)生成随机数:Math.random(),返回值类型double;

2)四舍五入取整:Math.round(double d),返回值类型long。

package J2;
public class ClassTest3 {
    public static void main(String[] args) {
        Student1 [] st1 = new Student1 [20];
        for (int i = 0; i < st1.length; i++) {
            st1[i] = new Student1();
        }
        for (int i = 0; i < st1.length; i++) {
            st1[i].number = i;
        }
        for (int i = 0; i < st1.length; i++) {
            st1[i].score = (int)(Math.random() * 99 + 1);
        }
        for (int i = 0; i < st1.length; i++) {
            st1[i].state = (int)(Math.random() * 5 + 1);
        }
        for (int i = 0; i < st1.length; i++) {
            if (st1[i].state == 3) {
                System.out.println("学号" +st1[i].number + " 分数" + st1[i].score + " 年级" + st1[i].state);
            }
        }
        System.out.println();
        for (int i = 0; i < st1.length - 1; i++) {
            for (int j = 0; j < st1.length - 1 - i; j++) {
                if (st1[j].score > st1[j + 1].score) {
                    //st1是student1类型,temp也得是,这样才能实现转换
                    Student1 temp = st1[j];
                    st1[j] = st1[j + 1];
                    st1[j + 1] = temp;
                }
            }
        }
        System.out.println();
        for (int i = 0; i < st1.length; i++) {
            System.out.println("学号" +st1[i].number + " 分数" + st1[i].score + " 年级" + st1[i].state);
        }
    }
}
class Student1{
    int number;
    int state;
    int score;

}

7.优化上一道题

package J2;
public class ClassTest4 {
        public static void main(String[] args) {
            Student2 [] st1 = new Student2 [20];
            for (int i = 0; i < st1.length; i++) {
                st1[i] = new Student2();
            }
            for (int i = 0; i < st1.length; i++) {
                st1[i].number = i;
            }
            for (int i = 0; i < st1.length; i++) {
                st1[i].score = (int)(Math.random() * 99 + 1);
            }
            for (int i = 0; i < st1.length; i++) {
                st1[i].state = (int)(Math.random() * 5 + 1);
            }
            ClassTest4 t1 = new ClassTest4();
            t1.println(st1);
            System.out.println("*****");
            t1.sort(st1);
            t1.println(st1);
            System.out.println("*****");
            t1.seachState(st1, 3);
            System.out.println();
            
        }
        //括号里明确给哪个数组排序
        public void seachState(Student2[] st1 , int state) {
            for (int i = 0; i < st1.length; i++) {
                if (st1[i].state == state) {
                    st1[i].info();
                    
                }
            }
        }
        public void println(Student2[] st1) {
            for (int i = 0; i < st1.length; i++) {
                st1[i].info();
                
            }
        }
        public void sort(Student2[] st1) {
            for (int i = 0; i < st1.length - 1; i++) {
                for (int j = 0; j < st1.length - 1 - i; j++) {
                    if (st1[j].score > st1[j + 1].score) {
                        //st1是student1类型,temp也得是,这样才能实现转换
                        Student2 temp = st1[j];
                        st1[j] = st1[j + 1];
                        st1[j + 1] = temp;
                    }
                }
            }
        }
    }
    class Student2{
        int number;
        int state;
        int score;
    public void info() {
        System.out.println("学号" +number + " 分数" + score + " 年级" + state);
    }
    }
    

8.

编写程序,定义三个重载方法并调用。方法名为mOL。

三个方法分别接收一个int参数、两个int参数、一个字符串参数。分别执行平方运算并输出结果,

相乘并输出结果,输出字符串信息。

在主类的main()方法中分别用参数区别调用三个方法。

package J2;
public class ClassTest5 {
    public static void main(String[] args) {
        ClassTest5 t1 = new ClassTest5();
        t1.mOL("moon");
        t1.mOL(2);
        t1.mOL(3, 4);
    }
    public void mOL(int m) {
        System.out.println(m * m);
    }
    public void mOL(int m,int n) {
        System.out.println(m * n);
    }
    public void mOL(String m) {
        System.out.println(m);
    }
}

9.

定义三个重载方法max(),第一个方法求两个int值中的最大值,第二个方法求两个double值中的最大值,

第三个方法求三个double值中的最大值,并分别调用三个方法。

package J2;
public class ClassTest6 {
    public static void main(String[] args) {
        ClassTest6 t1 = new ClassTest6();
        t1.max(3, 6);
        t1.max(4.7, 8.9, 1.0);
        t1.max(4, 9);
    }
    public void max(int a,int b) {
        int c = (a > b)?a:b;
        System.out.println("最大值为" + c);
    }
    public void max(double a,double b) {
        double c = (a > b)?a:b;
        System.out.println("最大值为" + c);
    }
    public void max(double a,double b,double d) {
        double c = (a > b)?a:b;
        double e = (c > d)?c:d;
        System.out.println("最大值为" + e);
    }
}

10.

输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值

1 1 2 3 5 8 13 21 34 55

规律:一个数等于前两个数之和

要求:计算斐波那契数列(Fibonacci)的第n个值,并将整个数列打印出来

package J2;
public class Fibonacci {
    public static void main(String[] args) {
        Fibonacci F1 =new Fibonacci();
        int num1 =F1.Fibonacci1(10);
        System.out.println(num1);
    }
    public int Fibonacci1(int num) {
        if (num == 1) {
            return 1;
        } else if (num == 2) {
            return 1;
        }else{
            return Fibonacci1(num - 1) + Fibonacci1(num - 2);
        }
    }
}

11.
(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积。
(2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:public void printAreas(Circle c, int time)
在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积。例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积。
(3)在main方法中调用printAreas()方法,调用完毕后输出当前半径值。程序运行结果如图
所示。

package J2;
/*
 * 定义一个Circle类,包含一个double型的radius属性代表圆的半径,
 * 一个findArea()方法返回圆的面积。
 */
public class Circle1 {
    double radius = 0;
    public double findArea() {
        return Math.PI * radius * radius;
    }
}
package J2;

public class PassObject {
    public static void main(String[] args) {
        PassObject p1 = new PassObject();
        Circle1 c = new Circle1();
        p1.printAreas(c, 6);
    }
    public void printAreas(Circle1 c, int time){
    System.out.println("radius\t\t面积 ");
    for (int i = 0; i <= time; i++) {
        c.radius = i;
        Double mianji = c.findArea();
        System.out.println( c.radius + "\t\t" + mianji);
    }
    System.out.println("当前半径值为" + (time + 1));
    }
}

12.计算1-100之间所有自然数的和

package J2;
//计算1-100之间所有自然数的和
public class Recursion {
    public static void main(String[] args) {
        //方法一
        int sum = 0;
        for (int i = 0; i < 101; i++) {
            sum += i;
        }
        System.out.println(sum);
        System.out.println();
        //方法二
        Recursion r1 = new Recursion();
        int num1 = r1.cal(100);
        System.out.println(num1);
        System.out.println();
        int num2 = r1.jc(100);
        System.out.println(num2);
    }
    public int cal(int num) {
        if(num == 1){
            return 1;
        }else{
            return num + cal(num - 1);
        }
    }
    //递归求阶乘(n!)的算法
    public int jc(int num) {
        if(num == 1){
            return 1;
        }else{
            return num * cal(num - 1);
        }
    }
}

13.

已知有一个数例:f(0)=1,f(1)=4,f(n+2)=2*(n+1)+f(n),

 其中n是大于0的整数,求f(10)的值

package J2;
public class RecursionTest {
    public static void main(String[] args) {
        RecursionTest r1 = new RecursionTest();
        int num1 =r1.fx(10);
        System.out.println(num1);
    }
    public int fx(int num) {
        if (num == 0) {
            return 1;
        } else if (num == 1) {
            return 4;
        }else{
            return 2 * (num - 1) + fx(num - 2);
        }
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摩尔曼斯克的海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值