【4-3】多彩的声音

2023-10-27

设计和实现一-个Soundable发声接口,该接口具有发声功能,同时还能调节声音大小。Soundable接口的这些功能将由有3种声音设备来实现,他们分别是收音机Radio、随身听Walkman、手机MobilePhone.最后还需设计--个应用程序类来使用这些实现Soundable接口的声音设备。程序运行时,先询问用户想哪个设备,用户选择设备后,程序按照该设备的工作方式打印发出的发音。

此案例分为五个类 Phone Radio Usersound WalkMan Test 一个接口Soundable

 Soundable接口

public interface Soundable {
    public abstract void playSound();
    public abstract void lower();
    public abstract void stop();
}

Phone 类

public class Phone implements Soundable {
    @Override
    public void playSound() {
        System.out.println("手机发出来电铃声:叮当 叮当");
    }

    @Override
    public void lower() {
        System.out.println("以降低手机音量");
    }

    @Override
    public void stop() {
        System.out.println("已关闭手机");
    }
}

Radio 类

public class Radio implements Soundable {

    @Override
    public void playSound() {
        System.out.println("收音机播放广播:第八套小学生广播体操");
    }

    @Override
    public void lower() {
        System.out.println("以降低收音机音量");
    }

    @Override
    public void stop() {
        System.out.println("已关闭收音机");
    }
}

Usersound类

import java.util.Scanner;

public class UserSound {
    public void use(Soundable s){
        s.playSound();
        System.out.println("是否降低音量?  1-是 2-否");
        Scanner sc =new Scanner(System.in);
        int a =sc.nextInt();
        if (a==1){
            s.lower();
            System.out.println("是否要关机?1-是 2-否");
            int b =sc.nextInt();
            if (b==1){
                s.stop();
            }
        }

    }
}

WalkMan 类

public class WalkMan implements Soundable{
    @Override
    public void playSound() {
        System.out.println("正在播放歌曲;七里香");
    }

    @Override
    public void lower() {
        System.out.println("以降低随身听音量");
    }

    @Override
    public void stop() {
        System.out.println("已关闭随身听");
    }
}

Test类

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        System.out.println("你想听什么?请输入");
        System.out.println("0-收音机 1-随身听  2-手机");
        Scanner sc =new Scanner(System.in);
        int i= sc.nextInt();
        UserSound u=new UserSound();
        if (i==0){
            u.use(new Radio());

        }else  if (i==1){
            u.use(new WalkMan());
        }else if (i==2){
            u.use(new Phone());
        }else{
            System.out.println("输入的有误");
        }
    }
}

结果展示

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【4-3】多彩的声音 的相关文章

  • 在 mvn 命令中指定 pom.xml 并混合其他项目的目标

    我有多个问题 我可以在 mvn 命令中指定 pom xml 吗 在当前项目上执行 mvn 命令时 我可以混合另一个项目的目标吗 例如 mvn clean otherproject comple otherproject install ot
  • 从 java sdk 向对等方发送提案时出现访问被拒绝错误

    我正在尝试使用以下代码查询区块链并收到访问被拒绝错误 我也遇到同样的错误sendTransactionProposal方法也是如此 UserContext adminUserContext RegisterEnrollUser regist
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • org.hibernate.QueryException:无法解析属性:文件名

    我正在使用休眠Criteria从列中获取值filename在我的桌子上contaque recording log 但是当我得到结果时 它抛出异常 org hibernate QueryException 无法解析属性 文件名 com co
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 是否可以使用 Flying Saucer (XHTML-Renderer) 将 css 解析为类路径资源?

    我正在尝试将资源打包到 jar 中 但我无法让 Flying Saucer 在类路径上找到 css 我无法轻松构建 URL 来无缝解决此问题 https stackoverflow com questions 861500 url to l
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • 从 GitHub 上托管的 Spring Cloud Config Server 访问存储库的身份验证问题

    我在 GitHub 上的存储库中托管配置 如果我将回购公开 一切都好 但如果我将其设为私有 我将面临 org eclipse jgit errors TransportException https github com my user m
  • Java实现累加器类,提供Collector

    A Collector具有三种通用类型 public interface Collector
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数
  • Java EE 目录结构

    我对以下教程有疑问 http www mkyong com jsf2 jsf 2 internationalization example http www mkyong com jsf2 jsf 2 internationalizatio

随机推荐

  • 运维基础知识

    一 简述运维流程 1 接手平台 管理资产 增删 设置平台对资产是扫描策略 2 每天按照规定的巡检周期对资产进行巡检 巡检过程中检测资产的目前状态做记录 查看是否有新增告警事件 将发现的新增告警事件按照规定输出详细的事件工单 工单内要求详细描
  • Error processing condition on org.springframework.cloud.commons.httpclient.HttpClientConfiguration

    背景 创建springboot项目后 导入nacos 配置中心和注册中心依赖后报错 springboot启动类无法正常启动 控制台异常如题 报错源码 java lang IllegalStateException Error process
  • Springboot数据库连接池报错的解决办法

    Springboot数据库连接池报错的解决办法 这个异常通常在Linux服务器上会发生 原因是Linux系统会主动断开一个长时间没有通信的连接 那么我们的问题就是 数据库连接池长时间处于间歇状态 导致Linux系统将其断开了 然后抛出了这个
  • 关于解决win10的 tencent qqmail plugin 卸载不了的问题

    问题出现场景 我也是偶然一次在搜索我电脑里面下载的程序时 发现有个叫做tencent qqmail plugin的程序怎么也删除不掉 经过的我不断的尝试 欸 我终于找到解决方法了 问题描述 我之前使用的方法的是在 设置 应用 应用程序 中卸
  • 在VMware里克隆出来的CentOSLinux。。 ifconfig...没有看到eth0.。然后重启网卡又报下面错误。

    原文地址 http www 51testing com html 90 360490 846295 html 故障现象 service network restart Shutting down loopback insterface OK
  • 流程图中的虚线含义_流程图图形符号标准含义简介

    流程图是我们工作中经常会用到的一种工具 形象直观 便于理解 直观地描述一个工作过程的具体步骤 流程图对准确了解事情是如何进行的 以及决定应如何改进过程极有帮助 这一方法可以用于整个企业 以便直观地跟踪和图解企业的运作方式 流程图中有很多图形
  • 数据挖掘初探(skleran)

    1 使用sklearn进行数据挖掘 1 1 数据挖掘的步骤 数据挖掘通常包括数据采集 数据分析 特征工程 训练模型 模型评估等步骤 我们使用sklearn进行虚线框内的工作 sklearn也可以进行文本特征提取 通过分析sklearn源码
  • RT-Thread记录(十一、I/O 设备模型之UART设备 — 源码解析)

    深入理解 RT Thread I O 设备模型 分析 UART设备源码 目录 前言 一 初识 UART 操作函数 应用程序 二 UART 的初始化 2 1 UART 设备初始化位置 2 2 UART 设备初始化函数分析 stm32 uart
  • 华为IP的考试费要好几千,想问一下这个证书的含金量怎么样?

    虽然华为认证HCIP考试只考笔试 题库稳 运气好的话刷题库就有可能会过 但是其实学的时候还是好好学的 要不然只为了考试而去背题 但是实际操作能力不行的话一样会被企业拒绝的 最重要的还是掌握华为认证HCIP的技能 证书只是找工作的一个敲门砖
  • 服务器系统这么做,服务器怎么做系统

    服务器怎么做系统 内容精选 换一换 无法直接从云备份控制台查看备份中的数据 您可以通过以下几种方式进行查看 云服务器备份使用云服务器备份创建镜像后 再使用镜像创建云服务器 登录云服务器 查看服务器中的数据 云硬盘备份使用云硬盘备份创建新的云
  • 算法题:完全二叉树的权值

    问题描述 给定一棵包含 N 个节点的完全二叉树 树上每个节点都有一个权值 按从 上到下 从左到右的顺序依次是 A1 A2 AN 如下图所示 现在要把相同深度的节点的权值加在一起 他想知道哪个深度的节点 权值之和最大 如果有多个深度的权值和同
  • 代理模式,以及Java的动态代理

    定义 为其他对象提供一种代理以控制对这个对象的访问 可以提供额外不同的操作 UML类图 Subject类 定义了RealSubject和Proxy的共用接口 这样就在任何使用RealSubject的地方都可以使用Proxy RealSubj
  • UNIX环境高级编程 学习笔记 第十八章 终端I/O

    20世纪70年代后期 系统 UNIX System III 发展出一套不同于V7 Version 7 Unix 的终端IO例程 使得UNIX终端IO处理分立为两种不同风格 一种是系统 风格 它延续到了System V 另一种是V7风格 它成
  • 暴力破解Windows、Linux登录密码

    Windows密码破解 使用hydra离线破解windows密码 使用getpass内存提取windows用户密码 使用quarkpwdump导出windows用户密码hash值 Linux密码破解 使用hydra离线破解linux密码 将
  • idea启动java项目卡住问题

    当遇到 Method breakpoints may dramatically slow down debugging时 这时有可能可以进行下面步骤解决 Ctrl Shift F8 打开Breakpoints面板 然后可以测试是否可行
  • 记录好项目D21

    记录好项目 你好呀 这里是我专门记录一下从某些地方收集起来的项目 对项目修改 进行添砖加瓦 变成自己的闪亮项目 修修补补也可以成为毕设哦 本次的项目是个基于Springboot的教务管理系统 学生管理系统 课表查询系统 一 系统介绍 本项目
  • 使用EventEmitter构建基础的生命周期模型

    使用EventEmitter构建基础的生命周期模型 比如onCreate onUpdate onDestroy 分别在每个阶段console log一条消息 比如说 我们构建一个便签管理的EventEmitter 在onCreate时初始化
  • 献给面试学生 关键字const是什么意思 ESP(译者:Embedded Systems Programming) --Dan Saks概括了const的所有用法

    关键字const是什么含意 答 我只要一听到被面试者说 const意味着常数 我就知道我正在和一个业余者打交道 去年Dan Saks已经在他的文章里完全概括了const的所有用法 因此ESP 译者 Embedded Systems Prog
  • 商品期货的模拟盘能打印交易记录吗(商品期货的模拟盘能打印交易记录吗为什么)

    商品期货模拟盘可以打印交易记录吗 仿真盘没有实际测试过 大家可以自己试试 股指期货模拟交易和股指期货模拟交易有什么区别 您好 开展模拟交易的目的是为了深化对股指期货合约 规则和制度的检验 开展投资者教育活动 在模拟的交易过程中 交易过程 结
  • 【4-3】多彩的声音

    设计和实现一 个Soundable发声接口 该接口具有发声功能 同时还能调节声音大小 Soundable接口的这些功能将由有3种声音设备来实现 他们分别是收音机Radio 随身听Walkman 手机MobilePhone 最后还需设计 个应