day20Java学习打卡:类的设计(练习)

练习一:
/*
 * 要求:(1)创建Person类的对象,设置该对象的name、
age和sex属性,调用study方法,输出字符串
“studying”,调用showAge()方法显示age值,调用
addAge()方法给对象的age属性值增加2岁。
(2)创建第二个对象,执行上述操作,体会同一个类的
不同对象之间的关系。
 */
public class PersonTest {
    public static void main(String[] args) {
        Person p1=new Person();
        
        p1.name="Tom";
        p1.age=18;
        p1.sex=1;
        
        p1.study();
        p1.showAge();//ctrl+鼠标;alt+←
        
        int newAge=p1.addAge(2);
        System.out.println(p1.name+"的新年龄为:"+newAge);
        System.out.println(p1.age);//20
        
        //******************************
        Person p2=new Person();
        p2.showAge();//0
        p2.addAge(10);
        p2.showAge();//10
        
        p1.showAge();//20
        
    }

}

public class Person {
    //属性
    String name;
    int age;
    int sex;
    //1:男性,0:女性
    //方法
    public void study() {
        System.out.println("studying");
    }
    public void showAge() {
        System.out.println("age:"+age);
    }
    public int addAge(int i) {
        age+=i;
        return age;
    }

}

练习二:
/*
 * 利用面向对象的编程方法,设计类Circle计算圆的面积。
 */
//测试类
public class CircleTest {
    public static void main(String[] args) {
        Circle c1=new Circle();
        c1.radius=2.0;
        
        //方式一:
//        double area=c1.findArea();
//        System.out.println(area);
        
        //方式二:
        c1.findArea();
    }

}

class Circle{
    //属性
    double radius;//半径
    
    //方法
    //方式一:(有返回值)
//    public double findArea() {
//        double area=Math.PI*radius*radius;
//        return area;        
//    }
    
    //方式二:(无返回值)
    public void findArea() {
        double area=Math.PI*radius*radius;
        System.out.println("面积为:"+area);
    }
    
}


/*
   3.1 编写程序,声明一个method方法,在方法中打印一个10*8 的*型矩形,
       在main方法中调用该方法。
   3.2 修改上一个程序,在method方法中,除打印一个10*8的*型矩形外,再
       计算该矩形的面积,并将其作为方法返回值。在main方法中调用该方法,
       返回的面积值并打印。
   3.3 修改上一个程序,在method方法提供m和n两个参数,方法中打印一个
       m*n的*型矩形,并计算该矩形的面积, 将其作为方法返回值。在main方法
       中调用该方法,接收返回的面积值并打印。
 */


练习三:
public class Exer3Test {
    public static void main(String[] args) {
        Exer3Test e1=new Exer3Test();
        //3.1测试
//        e1.method();
        //3.2测试
//        int area=e1.method();
//        System.out.println("矩形的面积为:"+area);
        //3.3测试
        System.out.println(e1.method(5,9));
        
    }
/*    3.1
    public void method() {
        for(int i=1;i<=10;i++) {
            for(int j=1;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;
    }
*/
    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;
    }
}

练习四:
/*
 * 对象数组题目:
定义类Student,包含三个属性:学号number(int),年级state(int),成绩
score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
提示:
1) 生成随机数:Math.random(),返回值类型double; 
2) 四舍五入取整:Math.round(double d),返回值类型long。
 */

public class Exer4Test {
    public static void main(String[] args) {
        //声明一个Student类型的数组
        Student[] stus=new Student[20];
        
        for(int i=0;i<stus.length;i++) {
            //给数组元素赋值
            stus[i]=new Student();
            //给Student对象的属性赋值
            stus[i].number=i+1;
            //年级:[1,6] 公式:(int)(Math.random()*(b-a+1)+a)//random是double型的值
            stus[i].state=(int)(Math.random()*(6-1+1)+1);
            //成绩:[0,100]
            stus[i].score=(int)(Math.random()*(100-0+1)+0); 
        }
        
        //遍历学生数组
         for(int i=0;i<stus.length;i++) {
//            System.out.println(+stus[i].number+","+stus[i].state+","+stus[i].score);
            System.out.println(stus[i].info());
        }
         System.out.println("********************************");
        //问题一:打印出3年级(state值为3)的学生信息。
        for(int i=0;i<stus.length;i++) {
            if(stus[i].state==3) {
                System.out.println(stus[i].info());
            }
        }
        System.out.println("*************************");
        //问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
        for(int i=0;i<stus.length-1;i++) {
            for(int j=0;j<stus.length-1-i;j++) {
                if(stus[j].score<stus[j+1].score) {
                    Student temp=stus[j];
                    stus[j]=stus[j+1];
                    stus[j+1]=temp;
                }
            }
        }
        for(int i=0;i<stus.length;i++) {
            System.out.println(stus[i].info());
        }
    
        
    }
    

}

class Student{
    int number;//学号
    int state;//年级
    int score;//成绩
    
    //显示学生信息的方法
    public String info() {
        return "学号:"+number+",年级:"+state+",成绩:"+score;
    }
    
}


练习四(优化)(将操作数组的功能封装到方法中)
public class Exer4Test {
    public static void main(String[] args) {
        //声明一个Student类型的数组
        Student1[] stus=new Student1[20];
        
        for(int i=0;i<stus.length;i++) {
            //给数组元素赋值
            stus[i]=new Student1();
            //给Student对象的属性赋值
            stus[i].number=i+1;
            //年级:[1,6] 公式:(int)(Math.random()*(b-a+1)+a)//random是double型的值
            stus[i].state=(int)(Math.random()*(6-1+1)+1);
            //成绩:[0,100]
            stus[i].score=(int)(Math.random()*(100-0+1)+0); 
        }
        
        Exer4Test test=new Exer4Test();
        
        //遍历学生数组
        test.print(stus);
         
         System.out.println("********************************");
        
         //问题一:打印出3年级(state值为3)的学生信息。
         test.searchState(stus,3);
        
        System.out.println("*************************");
        
        //问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
        test.sort(stus);
        test.print(stus);
        
        
    }
    
    //遍历Student1数组的操作(封装到方法里)
    public void print(Student1[] stus) {
        for(int i=0;i<stus.length;i++) {
            System.out.println(stus[i].info());
        }
        
    }
    
    //查找指定年级的数组
    public void searchState(Student1[] stus,int state) {
        for(int i=0;i<stus.length;i++) {
            if(stus[i].state==state) {
                System.out.println(stus[i].info());
            }
        }
        
    }
    
    //给Student1数组冒泡排序
    public void sort(Student1[] stus) {
        for(int i=0;i<stus.length-1;i++) {
            for(int j=0;j<stus.length-1-i;j++) {
                if(stus[j].score<stus[j+1].score) {
                    Student1 temp=stus[j];
                    stus[j]=stus[j+1];
                    stus[j+1]=temp;
                }
            }
        }
        
    }
    

}

class Student1{
    int number;//学号
    int state;//年级
    int score;//成绩
    
    //显示学生信息的方法
    public String info() {
        return "学号:"+number+",年级:"+state+",成绩:"+score;
    }
    
}

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值