Java面向对象(二)(类的方法)(自己学习整理的资料)

news2024/9/27 19:23:12

目录

一.带参方法

带1个参数的方法

带2个参数的方法

带3个参数的方法

数组作为参数

(图书管理系统)

递归方法

二.简易银行存取款功能


一.带参方法

  • 语法

<访问修饰符>返回类型<方法名>(<形式参数列表>){

//方法的主体

}

  • 带1个参数的方法
package lian;

public class Dog {
    //类的成员
 String name;//成员变量
    //成员方法
 public void eat(String food){
     System.out.println("吃" + food);
    }
}
package lian;

public class dog2 {
    public static void main(String[] args) {
        Dog dog = new Dog();
   dog.eat("骨头");
    }
}

ps:图截取自视频老师讲解。

  • 带2个参数的方法
package lian;

public class Calc1 {
        public int add(int num1,int num2){
           int result = num1 + num2;
           return result;
            }
        }
package lian;

public class calc2 {
    public static void main(String[] args) {
        Calc1 calc = new Calc1();
        int num1 = 3,num2 = 5;
        int result = calc.add(num1, num2);
        System.out.println(result);
    }
}

ps:图截取自视频老师讲解。

  • 带3个参数的方法
package lian;

public class Calc1 {
    public int calcData(int num1, int num2, char oper) {
        int result = 0;
        switch (oper) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                if (num2 != 0) {
                    result = num1 / num2;
                } else {
                    result = -1;
                }
break;
            default:
                result = -2;//操作符错误
                break;
        }
        return result;
    }
}
package lian;

import java.util.Scanner;

public class lian1 {
    public static void main(String[] args) {
        Calc1 calc = new Calc1();
        Scanner input = new Scanner(System.in);
        System.out.println("请输入第一个数字:");
        int num1 = input.nextInt();
        System.out.println("请输入第二个数字:");
        int num2 = input.nextInt();
        System.out.println("请输入运算符:");
        char oper = input.next().charAt(0);
        int result = calc.calcData(num1, num2, oper);
        if (result == -1) {
            //证明现在除数为0
            System.out.println("除数不能为0!");
        } else if (result == -2) {
            System.out.println("运算符错误!");
        }
        System.out.println(result);
    }
}
  • 数组作为参数

练习

  • (一)小明班级里有5位同学参加了数学竞赛,输出比赛的平均成绩和最高成绩。
package lian;

public class Calc {
    //定义一个求平均成绩的方法
    public double getAvgScore(int[] scores){
        int sum = 0;
        for (int i = 0;i < scores.length;i++){
            sum += scores[i];
        }
        //平均分=总分/总人数
        double avgScore = sum*1.0/scores.length;
        return avgScore;
    }


    //定义一个求最高分的方法
public int getMaxScore(int[] scores){
        //求最高分,核心思想,默认第一项是最高分
        int max = scores[0];
        for (int i = 1;i < scores.length;i++){
            if (scores[i] > max){
                max = scores[i];
            }
        }
        return max;
}
}
package lian;

import java.util.Scanner;

public class lian1 {
    public static void main(String[] args) {
            //实例化Calc
        int[] scores = new int[5];
        Calc calc = new Calc();
        Scanner input = new Scanner(System.in);
        System.out.println("请输入5名学员的成绩:");
        //数组赋值的操作
        for (int i = 0;i < scores.length;i++){
            scores[i] = input.nextInt();
        }
        double avgScore = calc.getAvgScore(scores);
        int maxScore = calc.getMaxScore(scores);
        System.out.println("平均分为:"+ avgScore);
        System.out.println("最高分为:"+ maxScore);
    }
}
  • (二)创建一个Movie类,有电影名称、导演、演员三个属性。写一个打印所有属性信息的方法。实例化两个电影对象。
package lian;

/**
 * 定义一个电影类
 */
public class Movile {
    String name;
    String director;
    String[] actors;

    //写一个可以给演员数组赋值的方法
    public void initActors(String[] acts){
        actors = acts;
    }

    //介绍影片阵容的一个方法
    public void show(){
        System.out.println("电影名称为:" + name);
        System.out.println("电影导演为:" + director);
        System.out.println("电影的演员为:");
        for (int i = 0;i < actors.length;i++){
            System.out.println(actors[i]);
        }
    }
}
package lian;

public class dianying {
    public static void main(String[] args) {
        Movile movile = new Movile();
        movile.name="人生";
        movile.director = "李";
        String[] actors = new String[5];
        actors[0]="张三";
        actors[1]="李四";
        actors[2]="王五";
        actors[3]="赵二";
        actors[4]="刘一";
        movile.initActors(actors);
        movile.show();
        System.out.println("==================");
        Movile movile2 = new Movile();
        movile2.name = "中国革命军";
        movile2.director = "无名";
        String[] actors2=new String[5];
        actors[0]="成龙";
        actors[1]="文章";
        actors[2]="李小龙";
        actors[3]="李连杰";
        actors[4]="吴孟达";
        movile2.initActors(actors2);
        movile2.show();
    }
}
  • (三)制作一个显示所有图书列表和添加图书功能的系统。让用户可以方便的添加和查看图书。
  • (图书管理系统)
package lian;

/**
 *定义图书类
 */
public class Book {
//记录图书信息
    String bookname;//图书名称
    String bookauthor;//作者
    int price;
}
package lian;

/**
 * 针对图书的管理类
 */
public class BookManager {
    //维护一个数组,数组的类型,图书类型,对象数组
    Book[] books = new Book[50];
    //对books进行初始化,给前两项赋值
    public void initBooks(){
    //构建一个图书对象
    Book book = new Book();
        book.bookname="阿泰勒的角落";
        book.bookauthor = "李娟";
        book.price=45;
        books[0]=book;

        Book book2 = new Book();
        book2.bookname="平凡的世界";
        book2.bookauthor = "路遥";
        book2.price=55;
        books[1]=book2;
    }

    //图书列表
public void booklist(){
    System.out.println("这里是图书列表:");
    System.out.println("书名\t\t作者\t\t价格");
        for (int i = 0;i < books.length;i++ ) {
            if (books[i] != null) {


                System.out.println(books[i].bookname + "\t\t" + books[i].bookauthor + "\t\t" + books[i].price);
            }
        }
}

    //添加图书
    public boolean addBook(Book book) {
        boolean flag = false;
        for (int i = 0; i < books.length; i++) {
            if (books[i] == null) {//判定对象是否为空,和null相比较
                books[i] = book;
                flag = true;
                break;
            }
        }
        return flag;
    }
}
package lian;

import java.util.Scanner;


public class jiemian {
    public static void menu(){
        System.out.println("欢迎来到图书管理系统");
        System.out.println("1、图书列表");
        System.out.println("2、添加图书");
        System.out.println("0、退出系统");
        System.out.println("请输入对应操作,输入数字即可");
    }

    public static void main(String[] args) {
        BookManager manager=new BookManager();
        manager.initBooks();
        menu();
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        while(num!=0){//规定0是结束程序
            if (num==1){
                //图书列表
                manager.booklist();
                menu();
                num = input.nextInt();
            }else if (num==2) {
                //添加操作
                System.out.println("这里是添加图书界面:");
                Book book = new Book();
                System.out.println("请输入图书名称:");
                book.bookname = input.next();
                System.out.println("请输入图书作者:");
                book.bookauthor = input.next();
                System.out.println("请输入图书价格:");
                book.price = input.nextInt();
                boolean flag = manager.addBook(book);
                if (flag == true) {
                    System.out.println("添加成功!");
                } else {
                    System.out.println("添加失败!");
                }
                menu();
                num = input.nextInt();
            }else if (num==0){
                break;
            }
        }
        System.out.println("感谢您使用该系统");
    }
}

  • 递归方法

方法调用自己,这种调用称为“递归”调用,这样的方法被称为“递归方法”。

一个问题要想用递归的方法来解决,必须要符合两个条件:

  1. 可以把这个问题转化成一个新问题,而新问题的解法和原问题的解法完全相同,只是问题规模变小了;
  2. 必须要有一个明确的递归结束事件(递归边界)。

练习

  • 求阶乘   编程求n阶乘的值,n!=1×2×3×···×(n-1)×n。
package lian;

import java.util.Scanner;

public class jiecheng {
    public static int func(int n){
        if (n==1){
            return 1;
        }else {
            return n * func(n-1);
        }
    }

    public static void main(String[] args) {
        System.out.println("请输入一个数:");
        //求n的阶乘
        Scanner input = new Scanner(System.in);
        int n =input.nextInt();
        System.out.println(func(n));
    }
}

二.简易银行存取款功能

package lian;

/**
 * 定义一个账号类
 */
public class Account {
    double money;//定义账号金额
    //01、查询余额
    public double getMoney(){
        return money;
    }

    //02、存款
public void save(double num){
        money += num;
    System.out.println("存款成功!");
    System.out.println("当前余额为:"+money);
}

    //03、取款
    public void qu(double num){
        //判定一下
        if (money >= num){
            money -= num;
            System.out.println("取款成功!");
            System.out.println("当前余额为:"+money);
        }else {
            System.out.println("余额不足!");
            System.out.println("当前余额为:"+money);
        }
    }
}
package lian;

import java.security.spec.RSAOtherPrimeInfo;
import java.util.Scanner;

public class Back {
    public static void main(String[] args) {
        //存取款功能
        Account account = new Account();

        Scanner input = new Scanner(System.in);

        while (true) {
            System.out.println("1、存款   2、取款    0、退出   请选择您要办理的业务:");
            int num = input.nextInt();
            if (num == 1) {
                //存款
                System.out.println("这里是存储页面");
                System.out.println("请输入存款金额:");
                double money = input.nextDouble();
                account.save(money);
            } else if (num == 2) {
                System.out.println("这里是取款界面");
                System.out.println("请输入取款金额:");
                double money = input.nextDouble();
                account.qu(money);
            } else if (num == 0) {
                System.out.println("感谢您选择本银行");
                break;
            } else {
                System.out.println("选择有误,请重新选择!");
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2165117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++——认识STL及使用及实现第一个容器string

✨✨ 欢迎大家来到小伞的大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 小伞的主页&#xff1a;xiaosan_blog 1. 什么是STL 1.1 STL的版本 STL(standard template libaray-标准模板库)&…

垃圾回收级别分类识别系统源码分享

垃圾回收级别分类识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comp…

【线程】线程的同步---生产消费者模型

本文重点&#xff1a;理解条件变量和生产者消费者模型 同步是在保证数据安全的情况下&#xff0c;让我们的线程访问资源具有一定的顺序性 条件变量cond 当一个线程互斥地访问某个变量时&#xff0c;它可能发现在其它线程改变状态之前&#xff0c;它什么也做不了&#xff0c;…

电路 - 笔记2

1 555 芯片 2 类比 - pU*I 与 Fm*a 是不是可以与牛顿定律类比 - Fm*a 人的力量&#xff08;F&#xff09;有限。 当推大箱子&#xff08;m&#xff09;时&#xff0c;加速度&#xff08;a&#xff09;就不会很大 当推小箱子&#xff08;m&#xff09;时&#xff0c;加速度…

RTE 大会报名丨AI 时代新基建:云边端架构和 AI Infra ,RTE2024 技术专场第二弹!

所有 AI Infra 都在探寻规格和性能的最佳平衡&#xff0c;如何构建高可用的云边端协同架构&#xff1f; 语音 AI 实现 human-like 的最后一步是什么&#xff1f; AI 视频的爆炸增长&#xff0c;给新一代编解码技术提出了什么新挑战&#xff1f; 当大模型进化到实时多模态&am…

mysql批量修改表前缀

现有表前缀xh,批量修改为fax_需要怎么做 SELECTCONCAT(ALTER TABLE ,table_name, RENAME TO fax_,substring(table_name, 3),;) FROMinformation_schema. TABLES WHEREtable_name LIKE xh_%; 运行之后可以但是生成了一批修改表明的命令 此时批量复制执行就可实现批量修改表前…

架构设计读后有感——原则

成为架构时是程序员的梦想&#xff0c;并不意味着把编程做好就能够自然的成为一个架构师&#xff0c;他们之间有一个鸿沟->“不确定性” 不确定性&#xff1a;编程本质上说是不存在不确定性的&#xff0c;因为一个输入可以通过逻辑的运算得到确定的值&#xff0c;即使是机器…

电脑ip变了后导致原来的虚拟机静态ip失效问题

电脑ip变了后导致原来的虚拟机静态失效问题处理 静态IP设置的几个要点 查看本地网络的配置 VMware虚拟机网络设置 子网IP必须和本地ip在同一个网段下&#xff0c;本地的ip是192.168.1.10&#xff0c;那我子网ip就应该是192.168.1.xxx&#xff0c; 网关ip需要保持一致。 DHCP…

剧本杀分类管理

1用户界面 用户注册/登录模块与剧本杀填写模块&#xff1a;用户注册/登录成功后&#xff0c;将用户信息传递给剧本杀填写模块&#xff0c;以便用户进行剧本杀的填写。 图6-1登录注册 剧本杀填写模块与剧本杀分类管理模块&#xff1a;剧本杀填写完成后&#xff0c;将剧本杀信息…

Adaptive Object Detection with Dual Multi-Label Prediction

gradient reversal layer (GRL) 辅助信息 作者未提供代码

小孩真的需要手机上学吗?怎样远程了解他在学校用iPhone干什么?

互联网在教育、娱乐、社交等多个领域发挥着重要作用&#xff0c;成为孩子们获取知识、放松娱乐的重要渠道。孩子们首次接触互联网的年龄越来越小&#xff0c;有的甚至在幼儿园阶段就开始使用智能设备。 一些学校推行电子书包、网络作业等&#xff0c;虽然提高了效率&#xff0c…

【Golang】Go语言中如何面向对象?

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Vue3:toRaw与markRaw

目录 一.toRaw 1.性质 2.作用 二.markRaw 1.性质 2.作用 三.toRaw的使用 四.markRaw的使用 五.代码示例 在Vue 3中&#xff0c;toRaw和markRaw是两个用于处理响应式对象的全局函数。 一.toRaw 1.性质 toRaw是一个全局函数&#xff0c;它接受一个由reactive或ref生成…

JS面试真题 part6

JS面试真题 part6 26、如何判断一个元素是否在可视区域中27、什么是单点登录&#xff1f;如何实现28、 如何实现上拉加载&#xff0c;下拉刷新29、说说你对正则表达式的理解&#xff1f;应用场景&#xff1f;30、说说你对函数式编程的理解&#xff1f;优缺点 26、如何判断一个元…

Vue74 路由的props配置

笔记 ​ 作用&#xff1a;让路由组件更方便的收到参数 {name:xiangqing,path:detail/:id,component:Detail,//第一种写法&#xff1a;props值为对象&#xff0c;该对象中所有的key-value的组合最终都会通过props传给Detail组件// props:{a:900}//第二种写法&#xff1a;props…

《动手学深度学习》笔记1.11——实战Kaggle比赛:预测房价+详细代码讲解

目录 0. 前言 原书正文 1. 下载和缓存数据集 1.1 download() 下载数据集 1.2 download_extract() 解压缩 2. Kaggle 简介 3. 访问和读取数据集 4. 数据预处理 5. 训练&#xff08;核心难点&#xff09; 5.1 get_net() 定义模型-线性回归 5.2 log_rmse() 对数均方根…

见合八方亮相重庆光纤传感大会(OFS China-2024)

2024年9月20日至22日&#xff0c;第十二届中国光纤传感大会&#xff08;OFS China-2024&#xff09;在重庆成功举办&#xff0c;该大会旨在展示光纤传感技术在多个领域的最新研究成果&#xff0c;推动该技术的产业化进程。 在本次大会上&#xff0c;天津见合八方光电科技有限公…

JDK1.8与JDK17相互切换

&#x1f4d6; 前言&#xff1a;在电脑已经安装jdk17后&#xff0c;发现有些项目不兼容&#xff0c;需要用到以前的jdk1.8&#xff0c;本文介绍简单切换的方法。 &#x1f50e; 甲骨文jdk1.8官网下载 下载完jdk1.8后&#xff0c;可以将其与jdk17放在同一目录层级下。 搜索栏直…

我眼中的Token2049 是一场加密大秀

今年Token2049&#xff0c;其实我也收到很多来自币圈朋友、项目方或交易所的邀请&#xff0c;都一一婉拒了。因为每年9月&#xff0c;都是我一年来最忙碌的日子。一方面进入金九银十的销售旺季&#xff0c;另外副业也需要谈一些团购业务。 我喜欢Web3&#xff0c;也曾是 #Bitg…

《操作系统 - 清华大学》1 -1:操作系统概述 —— 内容概述

文章目录 1. 内容摘要2. 实验内容 1. 内容摘要 在这里对学习内容做一个整体上的介绍&#xff0c;那在这里包括我们要学习的内容&#xff0c;实验的内容。操作系统课涉及到计算机系统当中的资源管理&#xff0c;所以我们围绕着操作系统的实现来介绍相关内容&#xff0c;那主要分…