Java案例整理
1.随机点名器案例
1.1 案例介绍
随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息。
此案例在我们昨天课程学习中,已经介绍,现在我们要做的是对原有的案例进行升级,使用新的技术来实现。
我们来完成随机点名器,它具备以下3个内容:
l 存储所有同学姓名
l 总览全班同学姓名
l 随机点名其中一人,打印到控制台
1.2 案例需求分析
全班同学中随机的找出一名同学,打印这名同学的个人信息。
我们对本案例进行分析,得出如下分析结果:
1.存储全班同学信息(姓名、年龄)
2.打印全班同学每一个人的信息(姓名、年龄)
3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学信息(姓名、年龄)
随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起,则代码相对冗长,我们可以针对不同的功能可以将其封装到一个方法中,将完整独立的功能分离出来。
而在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有。此时,我们采用ArrayList集合来解决多个学生信息的存储问题。
package com.oracle.linkedlist;
public class Student {
String name;
int age;
}
package com.oracle.linkedlist;
import java.util.Scanner;
import java.util.Random;
class Test04 {
public static void main(String[] args) {
String[] arr=new String[5];
// 存储所有同学姓名
StudentName(arr);
// 总览全班同学姓名
StudentCname(arr);
// 存储所有同学姓名
StudentSname(arr);
}
// 存储所有同学姓名
public static void StudentName(String[] arr){
Scanner sc=new Scanner(System.in);
for (int i=0;i<arr.length;i++) {
System.out.println("第"+(i+1)+"同学姓名");
arr[i]=sc.next();
}
}
// 总览全班同学姓名
public static void StudentCname(String[] arr){
for(int i=0;i<arr.length;i++){
System.out.println("第"+(i+1)+"个同学:"+arr[i]);
}
}
// 存储所有同学姓名
public static void StudentSname(String[]arr){
int a = new Random().nextInt(arr.length);
System.out.println("被点到名的同学是:" +arr[a]);
}
}
运行结果:

2.库存管理案例
2.1 案例介绍
现在,我们将原有的库存管理案例,采用更好的集合方式实现。

将对下列功能进行方法封装:
l 打印库存清单功能
l 库存商品数量修改功能
l 退出程序功能
2.2 案例需求分析
管理员能够进行的操作有3项(查看、修改、退出),我们可以采用(switch)菜单的方式来完成。
-------------库存管理------------
1.查看库存清单
2.修改商品库存数量
3.退出
请输入要执行的操作序号:
每一项功能操作,我们采用方法进行封装,这样,可使程序的可读性增强。
选择“1.查看库存清单”功能,则控制台打印库存清单
选择“2.修改商品库存数量”功能,则对每种商品库存数进行更新
选择“3.退出”功能,则退出库存管理,程序结束
package com.oracle.demo03;
public class Stores {
String sname;
double ssize;
double smoney;
int sinventory;
}
package com.oracle.demo03;
import java.util.ArrayList;
import java.util.Scanner;
public class store {
public static void main(String[] args) {
ArrayList<Stores> list=new ArrayList();
Scanner sc=new Scanner(System.in);
while(true){
MainMenu();
int num=sc.nextInt();
switch(num){
case 1:QueryStore(list);
break;
case 2:updateStore(list);
break;
case 3:addStore(list);
break;
case 4:delectStore(list);
break;
case 5:
return;
default:
break;
}
}
}
//主菜单
public static void MainMenu(){
System.out.println("----------库存管理-----------");
System.out.println("1.查看库存清单");
System.out.println("2.修改商品库存数量");
System.out.println("3.添加商品");
System.out.println("4.删除商品");
System.out.println("5.退出");
System.out.println("请输入您要执行的编号:");
}
//查看库存清单
public static void QueryStore(ArrayList<Stores> list){
System.out.println("---------商城库存清单----------");
System.out.println("品牌型号\t\t尺寸\t价格\t库存数");
//MacBookAir品牌
Stores s1=new Stores();
s1.sname="MacBookAir";
s1.ssize=13.3;
s1.smoney=6988.88;
s1.sinventory=5;
System.out.println(s1.sname+"\t"+s1.ssize+"\t"+s1.smoney+"\t"+s1.sinventory);
//ThinkpadT450品牌
Stores s2=new Stores();
s2.sname="ThinkpadT450";
s2.ssize=14.0;
s2.smoney=5999.99;
s2.sinventory=10;
System.out.println(s2.sname+"\t"+s2.ssize+"\t"+s2.smoney+"\t"+s2.sinventory);
//ASUS-FL5800品牌
Stores s3=new Stores();
s3.sname="ASUS-FL5800";
s3.ssize=15.6;
s3.smoney=4999.5;
s3.sinventory=18;
System.out.println(s3.sname+"\t"+s3.ssize+"\t"+s3.smoney+"\t"+s3.sinventory);
//总库存数
int sum=s1.sinventory+s2.sinventory+s3.sinventory;
//库存商品总金额
double SUM=s1.smoney*5+s2.smoney*10+s3.smoney*18;
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).sname+"\t\t"+list.get(i).ssize+"\t"+list.get(i).smoney+"\t"+list.get(i).sinventory);
}
System.out.println("---------------------------");
System.out.println("总库存数:"+sum);
System.out.println("库存商品总金额:"+SUM);
}
//修改商品数量
public static void updateStore(ArrayList<Stores> list){
QueryStore(list);
Scanner sc=new Scanner(System.in);
System.out.println("请输入要修改的品牌数量:");
int inventory=sc.nextInt();
Stores stores=new Stores();
stores.sinventory=inventory;
for(int i=0;i<list.size();i++){
if(inventory==list.get(i).sinventory){
list.set(i, stores);
}
}
}
//添加清单
public static void addStore(ArrayList<Stores> list){
Scanner sc=new Scanner(System.in);
Stores stores=new Stores();
System.out.println("请输入新增加的品牌型号:");
String name=sc.next();
System.out.println("请输入新增加的品牌尺寸:");
double size=sc.nextDouble();
System.out.println("请输入新增加的品牌价格:");
double money=sc.nextDouble();
System.out.println("请输入新增加的品牌库存数:");
int inventory=sc.nextInt();
stores.sname=name;
stores.ssize=size;
stores.smoney=money;
stores.sinventory=inventory;
list.add(stores);
System.out.println("添加商品成功!");
}
//删除清单
public static void delectStore(ArrayList<Stores> list){
QueryStore(list);
Scanner sc=new Scanner(System.in);
System.out.println("请输入您要删除的品牌名称:");
String num=sc.next();
for(int i=0;i<list.size();i++){
if(num==list.get(i).sname){
list.remove(i);
}
System.out.println("删除商品成功!");
}
}
}
运行结果:

Java案例整理的更多相关文章
- Java validator整理
Java validator整理 因为想对方法的入参和出参作简单的非空或者非空字符做校验,所以找了下相关的@NotNull注解 类 | 说明 --- | --- javax.validation.co ...
- _00019 Storm架构介绍和Storm获取案例(简单的官方网站Java案例)
博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...
- java笔记整理
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...
- Java资料整理
Java资料整理 原创 2017年08月25日 17:20:44 14211 1.LocalThread的应用场景,数据传输适合用LocalThread么 2.linux的基本命令 软链接.更 ...
- ETL工具之kittle使用案例整理
主花了一下午时间,收集全网,学习了下kittle,觉得该大v写的不错,特意整理给大家!学会这几个案例kittle基本就没问题了. 1.kettle案例一抽取gz格式文本内容保存到mongodb ht ...
- JAVA基础整理-集合篇(一)
集合作为JAVA的基础知识,本来感觉自己理解的很清楚了,但是在最近的一次面试中还是答得不尽如人意!再次做一下整理,以便加深理解以及随时查阅. 首先,java.util包中三个重要的接口及特点:List ...
- Java数据结构整理(一)
ava数据结构内容整理关键字: 数据结构 Collection:List.SetMap:HashMap.HashTable如何在它们之间选择一.Array , ArraysJava所有“存储及随机访问 ...
- 面试之Java知识整理
1.面向对象都有哪些特性 继承.封装.多态性.抽象 2.Java中实现多态的机制是什么? 继承与接口 3.Java中异常分为哪些种类 3.1按照异常需要处理的时机分为编译时异常(CheckedExce ...
- Java案例:双色球的实现
//随机生成双色球号码 //案例:6颗红球(33选1) 1颗蓝球(16选1) 代码实现如下: import java.util.Random; import java.util.Arrays; // ...
随机推荐
- 【图像处理】openCV库教程
openCV 基础学习 with:于士琪openCV基础 env:opencv3.4.0+vc2017集成开发环境 图像的表示:矩阵 1. 灰度矩阵 <br> 2. 彩色(多通道)如RGB ...
- 自定义django-admin命令
我们可以通过manage.py编写和注册自定义的命令. 自定义的管理命令对于独立脚本非常有用,特别是那些使用Linux的crontab服务,或者Windows的调度任务执行的脚本.比如,你有个需求,需 ...
- Eclipse环境配置与快捷命令
1.VS.Chrome.Eclipse调试命令对比: VS: F5: 继续运行 F10: 单步执行 F11: 进入函数内部 Shift + F11: 由函数内部返回调用处 Chrome: F8: 继续 ...
- 【题解】Hanoi
题目描述 有三根柱A,B,C.在柱A上有N块盘片,所有盘片都是大的在下面,小片能放在大片上面.并依次编好序号,现要将A上的N块片移到C柱上,每次只能移动一片,而且在同一根柱子上必须保持上面的盘片比下面 ...
- puppet的常用语法
检查语法错误 puppet parser validate xx.pp 在客户端测试但是不应用 puppet agent --test --noop 基于安全的考虑,使用预签名证书 puppet ce ...
- #194 sequence(搜索+动态规划+主席树)
考虑按顺序暴搜子序列.如果序列中的数两两不同,显然每次给上一个找到的子序列添上后缀最小值,即为下一个要找的子序列.如果不能再加了就回溯继续考虑后缀次小.第三小……值,直到找到k个子序列. 有重复的数后 ...
- 洛谷P2084 进制转换
题目背景 无 题目描述 今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 : 1*2^4+0*2^3+1*2^2+0*2^1+1*2^0, 那么请你编程实现,将一个M进制的 ...
- python+appium里的等待时间
为什么要用等待时间: 今天在写App的自动化的脚本时发现一个元素,时而能点击,时而又不能点击到,很是心塞,原因是:因为元素还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了.解决方式:可以 ...
- IDEA 不识别的MAVEN 项目应如何处理
有些人啊,上传到git的项目,根本不是项目而是一个文件夹,文件夹里边还有个文件夹那才是项目,IDEA 不会识别出它是项目来 这个时候,需要选择这个文件夹下的pom.xml 文件 右键 pom.xml然 ...
- 爬虫_淘宝(selenium)
总体来说代码还不是太完美 实现了js渲染网页的解析的一种思路 主要是这个下拉操作,不能一下拉到底,数据是在中间加载进来的, 具体过程都有写注释 from selenium import webdriv ...