Java学习记录(补充二:面对对象基础复习,习题)

求3(可调整)个学员成绩的和或平均分或两者都具package day5;

import java.util.Scanner;

public class Score {
    //构造函数
    public Score(){
        System.out.println("实例化对象调用了我");
    }
    int sum;
    double avg;
    // 定义求和的方法
    public int sum() {
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入第" + (i + 1) + "个学员成绩");
            int score = scanner.nextInt();
            sum += score;
        }
        return sum;
    }
    //求平均分的方法    凡是方法名报错都是没有返回值return;
    public double avg(){
        double result = sum()/3;
        return result;
    }

    //既求和又求平均分的方法
    public double[] getSumAndAvg(){
        double[] results = new double[2];
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入第" + (i + 1) + "个学员成绩");
            int score = scanner.nextInt();
            sum += score;
        }
        results[0] = sum;
        results[1] = sum/3;
        return results;
    }

}
package day5;

import java.util.Arrays;

public class ScoreCalc {
    public static void main(String[] args) {
        // 由类来产生对象 (实例化)会调用你的构造函数
        Score score1 = new Score();
        // 对象生成以后, 可以调用对象里的各个属性和方法

        System.out.println(score1.sum());
        System.out.println(Arrays.toString(score1.getSumAndAvg()));
    }
}

结果图:

求三门课的和及平均分(构造有参函数)package day5_1;

public class Score {
    // 属性
    int math;// 数学成绩
    int chinese;// 语文成绩
    int english;// 英语成绩
    int sum;// 总分
    double avg;// 平均分

    // 构造函数 与类同名,没有返回值 作用:数据的初始化!!!
    public Score(int math, int chinese, int english) {
        this.math = math;
        this.chinese = chinese;
        this.english = english;
    }

    // 方法
    // 求和
    public int sum() {
        sum = math + chinese + english;
        return sum;
    }

    // 求平均分
    public double avg() {
        avg = (math + chinese + english) / 3.0;
        return avg;
    }
}
package day5_1;

import java.util.Scanner;

public class ScoreTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数学成绩");
        int math = scanner.nextInt();
        System.out.println("请输入语文成绩");
        int chinese = scanner.nextInt();
        System.out.println("请输入英语成绩");
        int english = scanner.nextInt();
        //单纯的实例化对象
//        Score score = new Score();
//        score.math = math;
//        score.chinese = chinese;
//        score.english = english;

        //实例化兑现过的同时进行数据的初始化
        Score score = new Score(math,chinese,english);

        int result1 = score.sum();
        double result2 = score.avg();
        System.out.println(result1);
        System.out.println(result2);
    }
}

结果图:

学生名字排序(创建一个数组对象)package day5_2;

import java.util.Arrays;

public class NameSort {
    //2:把方法封装
    public String[] sort(String[] unOrderArr) {
        Arrays.sort(unOrderArr);
        return unOrderArr;
    }
}
package day5_2;

import java.util.Arrays;
import java.util.Scanner;

public class NameSortTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //1:准备数据
        String names[]= new String[5];
        for (int i = 0; i < 5; i++) {
            System.out.println("请一次输入第" + (i + 1) + "个学生名字");
            names[i] = scanner.next();
        }
        //3:调用类的方法(先实例化出对象)
        NameSort sortName = new NameSort();
        String[] orderArr = sortName.sort(names);
        System.out.println(Arrays.toString(orderArr));
    }
}

结果图:

单个对象的三门成绩求均分(传输对象)package day5_2;

public class Student {
    int math;
    int chinese;
    int english;
    public Student(int math,int chinese,int english){
        this.math = math;
        this.chinese = chinese;
        this.english = english;
    }
}
package day5_2;

public class StudentCalc {
    //创建一个对象(Student)
    public double avg(Student student){
        int mathScore = student.math;
        int chineseScore = student.chinese;
        int englishScore = student.english;
        double avg = (mathScore+chineseScore+englishScore)/3;
        return avg;
    }
}
package day5_2;

import java.util.Scanner;

public class StudentTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数学成绩");
        int math = scanner.nextInt();
        System.out.println("请输入语文成绩");
        int chinese = scanner.nextInt();
        System.out.println("请输入英语成绩");
        int english = scanner.nextInt();
        Student zhangSan = new Student(math, chinese, english);
        StudentCalc calc = new StudentCalc();
        System.out.println("平均分:"+calc.avg(zhangSan));
    }
}

结果图:

多个对象的姓名,年龄,身高,总身高平均(传输对象数组)package day5_3;
(构造一个有参函数)
public class Student {
        String name;
        int age;
        int height;
        public Student(String name,int age,int height){
            this.name = name;
            this.age = age;
            this.height = height;
        }

}
package day5_3;

public class StudentManager {
    //创建一个对象数组(Student[])
    public int avg(Student[] students) {
        int sum = 0;
        for (int i = 0; i < students.length; i++) {
            sum += students[i].height;
        }
        return sum/students.length;
    }

}
package day5_3;

import java.util.Scanner;

public class StudentManagerTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Student[] students = new Student[2];
        for (int i = 0; i < students.length; i++) {
            System.out.println("输入姓名");
            String name = scanner.next();
            System.out.println("请输入年龄");
            int age = scanner.nextInt();
            System.out.println("请输入身高");
            int height = scanner.nextInt();
            Student student = new Student(name, age, height);
            students[i] = student;
        }
        StudentManager calc = new StudentManager();
        System.out.println(calc.avg(students));
    }
}

结果图:


一次传递多个参数

package Day5_4;
public class User {
    String nick;
    String pwd;
    int age;
    String sex;
    String resignDate;
    String degree;
    public User(String nick,String pwd,int age,String sex,String resignDate,String degree){
        this.nick =nick;
        this.pwd = pwd;
        this.age = age;
        this.resignDate = resignDate;
        this.sex = sex;
        this.degree = degree;
    }
    public void  showMessage() {
        System.err.println("大家好!我是"+nick+",今年"+age+"岁");
        System.err.println("我是"+resignDate+"年注册的,目前等级是:"+degree);

    }
}
package Day5_4;

import java.util.Scanner;

public class UserTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的昵称:");
        String nick = scanner.next();
        System.out.println("请输入您的密码:");
        String pwd = scanner.next();
        System.out.println("请输入您的性别:");
        String sex = scanner.next();
        System.out.println("请输入您的等级:");
        String degree = scanner.next();
        System.out.println("请输入您的年龄:");
        int age = scanner.nextInt();
        System.out.println("请输入您的注册时间:");
        String resignDate = scanner.next();
        User user = new User(nick, pwd, age, sex, resignDate, degree);
        user.showMessage();
    }
}

结果图:

时间: 2024-10-13 22:33:37

Java学习记录(补充二:面对对象基础复习,习题)的相关文章

Java学习记录(补充三:面向对象的封装和继承)

面向对象的封装package day7; //面向对象的封装 public class Employee { String name = "zhangsan"; private int age; //多个方法重载 public Employee(){ } public Employee(String name,int age){ } public Employee(int age,String name){ } //可以在方法里修改不能访问的属性 public int getAge()

JAVA学习记录(二)————JAVA中的IO

Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. 数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流.数据写入程序可以是一段.一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流.对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Date类,Calendar类package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; //Date类 public class DateTest { public static void main(String[] args) { Date

Java学习记录(补充七:一些工具类)

Math类package Box; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class TestBox { public static void main(String[] args) { //八个包装类 /*Integer i=5;//在栈里面开辟了一个内存空间(基本数据类型) Integer n = new Integer(5);//用new在堆里面开辟了一

Java学习记录(补充一(以习题为主:判断,循环语句))

习题1:取一个四位数,求各个位数数字的和package Day2; import java.util.Scanner; public class Demo01 { public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.println("请输入你的卡号"); int cardNum = in.nextInt(); // 1234 int i1 = cardNum %

Java学习笔记(二)UML基础

用例图:代表系统的一个功能模块,仅仅是系统功能的描述.用例图包括:用例.角色.角色和用例之间的关系以及系统内用例之间的关系. 类图:表示系统中包含哪些实体,各实体之间如何关联. 类图除了表示实体内部结构之外,还可以表示实体之间的相互关系,类之间的三种基本关系: 关联(包括聚合,组合) 泛化(与继承同一个概念) 依赖:如果一个类的改动会导致另一个类改动,则称为两个类存在依赖关系. 组件图:大型应用程序通常不是一个类或一组类所能完成的,通常由一个或多个可部署的组件组成.可复用的组件通常打包成JAR,

Python - 面对对象(基础)

目录 Python - 面对对象(基础) 一. 概述 二. 创建类和对象 三. 面向对象三大特征 封装 继承 多态 Python - 面对对象(基础) 一. 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面向过程编程(Object Oriented Programming,OOP,面向对象程序设计) 最易被初学者接受,其往往用一长段代码来实现指定功能,开发

java学习记录(2):JMenuBar

1.在用这个时候发现很多的组件都有J的前缀,例如Button和JButton,前者是awt包的,后者是swing包的,两者耳朵区别是: AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口.AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,我们把它称为peers. 也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用操作系统所提供的图形库.由于不同操作系统的图形库所提供的功能

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者