"感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友。您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!"

代码

```Java
import java.util.Scanner;
class once{
private String brand ; // 品牌 不写死应该是可以后续写出有参构造方法自己去控制
private int price; // 价格
private String os; // 操作系统
private String type; // 型号 // 构造方法函数
public once(String brand, int price, String os, String type) {
this.brand = brand;
this.price = price;
this.os = os;
this.type = type;
}
// 配置类
public void configuration(){
System.out.println("手机品牌:"+brand+"\n价格:"+price+"\n操作系统:"+os+"\n型号:"+type+"\n===================");
}
// 拨号功能
public void dial(){
System.out.println("[1]自动拨打联系人电话 \t[2]来电转接听 \t[3]骚扰电话屏蔽 \t[4].........\n================" );
}
// 游戏功能
public void gage(String you1,String you2,String you3)
{
System.out.println("[1]"+you1+"\t[2]"+you2+"\t[3]"+you3+"\t[4]..........\n=======================");
}
// 音乐功能
public void music(String yin1,String yin2,String yin3){
System.out.println("[1]"+yin1+"\t[2]"+yin2+"\t[3]"+yin3+"\t[4]...........\n=======================");
} } public class phone {
public static void main(String[] args) {
once box1 = new once("小米",2999,"ios","13promax");
once box2 = new once("华为",4999,"鸿蒙","13promax冷锋蓝");
Scanner sc = new Scanner(System.in); // 键盘录入控制参数
System.out.println("请输入品牌名称查看配置 \n [1]\t小米 \n [2]\t华为\n输入e键退出程序 \n==========================");
String console = sc.nextLine();
while (true){
if (console.equals("小米")){
// 选择调用
box1.configuration();
System.out.println("编号获取功能:\t[1]电话功能\t[2]游戏功能\t[3]音乐功能");
int number = sc.nextInt();
if (number ==1){
box1.dial();
}else if(number ==2){
box1.gage("王者农药","和平精英","明日之后");
}else if(number ==3){
box1.music("晴天","七里香","落泪");
}else {
System.out.println("非法输入");
}
}else if(console.equals("华为")){
box2.configuration();
System.out.println("编号获取功能:\t[1]电话功能\t[2]游戏功能\n[3]音乐功能");
int number = sc.nextInt();
if (number ==1){
box1.dial();
}else if(number ==2){
box1.gage("第五人格","节奏大师","保卫萝卜");
}else if(number ==3){
box1.music("花海","退后","半岛铁盒");
}else {
System.out.println("非法输入");
}
}else if (console.equals("e") | console.equals("E")){
System.out.println("退出查看 \n=====================");
break;
}else {
System.out.println("非法字符");
break;
} }
}
}
```

实现思路

(1) 分析程序不包含数据的交互改查,所以不需要封装的get和set方法,定义,只需要定义普通的成员属性即可,创建once类定义

(2) 使用有参构造函数初始化实例对象传入4个定义好的成员变量分别是 品牌(brand),价格(price),操作系统(os),型号(type),实例化2次数据也是独立的,需要写入两部手机的参数

(3) 在once类中写入我们的普通方法,方法是我们的功能 分别是 dial(拨号功能) gage(游戏) music(音乐),同时里面加入形参,利用对象调用还可以传入自己写的实参,形成复用

(4) 在mian中使用Scanner配合if来判断何种手机,再进行方法的调用

0X1 设计功能所需

1 行我们引用好的键盘录入的类

2-14 我们定义好了once类 里面定义了需要有的四个属性,这些都是没有交互的所以我并没有定义set和get方法下方还有有参构造函数,将四个属性全部加入,后续需要实例化

38- 41回到主类的mian方法中,我们实例化有参构造函数,传入两部手机相应的配置,参数全部都是可控的,实例化出box1和box2这两个对象,通过这两个对象就可以调用后续的各种功能,并且不会产生冲突的现象因为实例化后都是独立的

回到class once中,上方已经实例化对象,那么类里面我们开始定义功能

16-18 查看手机功能,用户在选择好何种手机号会通过对象.方法() 的形式调用这个方法,方法内部写的就是之前有参构造函数传递而来的数据,当然要分清是box1还是box2的数据

19-20 dial拨号功能,定义的只是简单的打印语句,用户选择拨号功能后会自动调用这个方法,利用 \t进行空格和 \n换行让程序更加观

24-27 gage定义游戏功能,但是写入了形参,这里没有写死是因为游戏不像拨号肯定会有不同,这里定义了3个String类型形参,我们调用时可以自定义的写入我们想要的游戏名称

28-31 music音乐功能选择何种游戏,写法和gage功能一致,定义形参,实参留给我们自定义去写入。

到这里我们once类中已经写完,使用功能均在main方法中。

0X2 获取用户输入判断

42-44 进入在main方法中,在这里首先引入了键盘录入语句Scanner 对应上文 图1-1,获取到了参数,那么就是常规打印语句把条件输出到控制台,有小米和华为通过还有ese退出选项,这样更人性化,退出功能是直接breack,44 行获取到输入的字符串 给到console变量保存

45-59 此步就是判断代码,这个功能能不能实现就看判断到不到位,我还是喜欢if的形式去判断输入,配合while(true) 达到非常好的效果,并且退出程序也是可选的。

为了更加明了我将代码拆分来逐步讲解,

46 这里是第一个if判断,equals比较两个字符串是否相等,用户输入小米而正常进入程序

48 调用手机功能方法,我们小米是box1类则是 box1.configuration() 我们有参的数据也会传递输出手机的各项配置

49-50 完成第一个判断后输出该输出的,进行第二个判断,也就是手机的功能 是电话还是游戏还是音乐,使用int 类型变量存储,因为是编号获取保存到 number 中

51-59 利用number 变量去进行编号的判断,1 2 3 分别对应手机的功能, 1为拨号功能,调用 dial方法即可,直接打印;2 是游戏game功能,调用方法写入我们自定义的实参,3 音乐 music 同样如此, 如果是不正常输入直接截停,并且利用 while(true) 继续开始选择编号

运行结果

输入完一个编号还可以继续选择,非法输入会自动的回到选择编号位置,也可以加入 出功能,退出两个if则是定义一个定量为flag来控制,退出则讲变量变成 false,我这里没有写入感兴趣的可以自己动手写一写

0X3 退出功能结束

60-72 这里和上文判断一致,我也就不过多赘述

73-75 输入E/e 键退出程序,配合 逻辑或| 和equals 这里 大小写都可以判断到退出

76-79 非法字符强制退出结束程序没有什么操作

总结以上

以上就是程序全部讲解,实现其实并没有多复杂,把握基础多花点时间,与其抱怨不如提升自己;如有不正确不恰当之处 望老师同学不吝赐教!

Java实现查看手机配置与功能的更多相关文章

  1. 【java】JDK安装后,没有配置环境变量,也可以java -version查看到版本信息

    JDK安装后,没有配置环境变量,也可以java -version查看到版本信息 原因是:jdk安装过程,java.javaw.javaws三个命令被复制到C:\windows\system32目录下 ...

  2. Selenium2学习-001-Selenium2 WebUI自动化Java开发 Windows 环境配置

    此文主要介绍 Selenium2 WebUI自动化Java开发 Windows 环境配置,供各位亲们参考,若有不足之处,敬请各位大神指正,非常感谢! 所需软件列表如下所示: 所属分类 具体名称 备注 ...

  3. 【原创】LoadRunner Java Vuser脚本的配置和调试指南

    1 编写目的 本文介绍了Loadrunner多负载压力机的配置,并通过测试Java Vuser的数据库连接脚本对配置结果进行了验证,同时对配置过程中遇到的问题和解决的过程进行了记录,关于Java数据库 ...

  4. FasfDFS整合Java实现文件上传下载功能实例详解

    https://www.jb51.net/article/120675.htm 在上篇文章给大家介绍了FastDFS安装和配置整合Nginx-1.13.3的方法,大家可以点击查看下. 今天使用Java ...

  5. Java之SpringBoot自定义配置与整合Druid

    Java之SpringBoot自定义配置与整合Druid SpringBoot配置文件 优先级 前面SpringBoot基础有提到,关于SpringBoot配置文件可以是properties或者是ya ...

  6. Java学习-001-JDK安装配置

    本节主要讲述在 Win7 64bit 系统下安装.配置 JDK8u25,敬请参阅.详细步骤如下: 一.JDK下载 您可到 官方网站 或 我的云盘 下载,对应的JDK8u25的安装程序,下载过程不再赘述 ...

  7. SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework

    1.调用前组装参数 2.调用发送信息服务脚本   .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...

  8. 【原创】LoadRunner Java Vuser开发环境配置指南

    1 编写目的 本文主要介绍Java运行环境的配置,同时通过编写HelloWorld程序,讲解在LoadRunner下如何开发简单的Java Vuser脚本.关于Java语言的深入学习,大家可以参考其他 ...

  9. 在Eclipse的DDMS中查看手机data文件夹中的内容

    在模拟器状态下,在Eclipse的DDMS中的File Explorer下查看手机data/data中的内容是件非常轻松的事情,特别是查看databases 但是在真机模式下就全然不是那么一回事了,在 ...

  10. cpu-z如何查看电脑配置数据方法介绍

    CPU-Z是款经典的内存检测工具,具有5大功能,使用CPU-Z可以查询电脑的处理器.缓存.主板.内存.显卡以及SPD的信息.但是怎么具体看哪一个项目呢?在今天的教程中,小编就跟大家分享一下cpu-z ...

随机推荐

  1. 数组动态表单验证,添加数组,逆序添加,表单验证会错位,发现是key的默认index问题,还有验证trigger问题,添加数据会爆红

    数组动态表单验证,添加数组,逆序添加,表单验证会错位,发现是key的默认index问题,还有验证trigger问题,添加数据会爆红 解决方案: trigger: 'blur,change' 换 tri ...

  2. 跨域! dev: 'http://192.168.40.81:9090/xxx-api/' 平台和项目 两个都要改 要不会跨域!跨域!跨域!

    跨域! dev: 'http://192.168.40.81:9090/xxx-api/' 平台和项目 两个都要改 要不会跨域!跨域!跨域!

  3. c 串口读写数据实例解析

    一 前记 程序员就是不断地砌砖头,然后用砖头,把砖头模块化,用的时候直接调用,能够节省很多精力. 二 实例: 1 #include <stdio.h> 2 #include <uni ...

  4. python下进行10进制转16进制不带0x并且将16进制转成小端序

    前记   python涉及到和硬件互交的部分,一般是需要发送十六进制的帧长的.所以,python这个转换还是经常使用的.笔者在这里遇到了一个问题.就做一个记录吧. 基本方法:  假如你熟悉python ...

  5. 记录--前端无感知刷新token & 超时自动退出

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前端无感知刷新token&超时自动退出 一.token的作用 因为http请求是无状态的,是一次性的,请求之间没有任何关系,服务端 ...

  6. 记录--使用 JS 实现基本的截图功能

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 思路分析 在开始动手之前,分析一下整个功能的实现过程: 根据图片大小创建 canvas1 画布,并将原图片直接定位在 canvas1 上: ...

  7. C# 调用C++DLL时释放非托管内存

    方法一 改变非托管内存的分配方法,将其修改成采用COM的内存分配方法CoTaskMemAlloc来分配内存.这样封送拆收器在释放非托管内存时,就能自动调用COM的内存释放方法CoTaskMemFree ...

  8. Generalized Focal Loss:Focal loss魔改以及预测框概率分布,保涨点 | NeurIPS 2020

    为了高效地学习准确的预测框及其分布,论文对Focal loss进行拓展,提出了能够优化连续值目标的Generalized Focal loss,包含Quality Focal loss和Distrib ...

  9. Hybrid-PSC:基于对比学习的混合网络,解决长尾图片分类 | CVPR 2021

     论文提出新颖的混合网络用于解决长尾图片分类问题,该网络由用于图像特征学习的对比学习分支和用于分类器学习的交叉熵分支组成,在训练过程逐步将训练权重调整至分类器学习,达到更好的特征得出更好的分类器的思想 ...

  10. AndroidStudio--app是如何运行的

    #实用快捷键# Ctrl+alt+F 快速自动把类方法内部的变量声明为类属性变量,以方便全局使用! Ctrl+O  快速显示所有类方法以及field属性结构 今天发现了一个非常好的博主----litt ...