⭐欢迎来到JAVA语法专栏,一起学习,一起进步⭐
金九银十秋招季,也是开学的时候,不少同学开了JAVA这门课。一起来看看这两个案例来熟悉熟悉吧。
一、案例来源
案例源自Java基础案例教程一书,现为学校面向对象编程课程教科书。由黑马程序员编著。文章案例节选自38页案例2-1 商品入库,及44页案例2-2 小明都买什么。
二、案例基础
由于是需要用Java完成,就需要知道一些基础知识,不然后面的代码是看不懂的。这里附上之前类和对象博客的链接:
Java 类和对象详述
在这里在稍微总结一下:Java代码依据于类和对象,类是一类事物的统称,也可以理解成一把枪的构造蓝图。对象是类实例化出来的具体的事物。
Java当中的类和C语言的结构体相似,可以在类中设置属性、字段。不过Java还可以在类中写一些方法,也就是C语言中的函数。在创建类时需要在前面加上class+类名。举个例子:
class Person{
/**
* name、age均为Person类中的字段、属性
* eat方法是Person类的方法,带有一个String类型的参数
*/
String name;
int age;
public void eat(String name){
System.out.println(name+"吃饭");
}
}
类的构造方法:
方法中有一种特殊的叫构造方法,在实例化对象的时候会被自动调用的方法,方法名字和类名相同, 用于对象的初始化;
三、案例讲解
3.1 案例2-1 商品入库
案例信息:
现要对华为和小米两种手机产品进行入库,本案例要求编写一个模拟商品入库的程序,需要在控制台输入入库商品的数量,最后打印出仓库中所有商品详细信息,以及所有商品的总库存数和库存商品总金额。
商品信息如下:
● 品牌型号
● 尺寸
● 价格
● 配置
● 库存
● 总价
▲总结:
输入要求:从控制台输入入库商品的数量
输出要求:打印仓库的所有商品信息,总库存数,库存商品总金额
案例设计思路:将华为和小米两个商品设计成两个类,他们的商品信息就是类中的属性,在创建一个带有商品数量的参数的构造方法,直接在构造方法里打印出输出要求的信息即可。
设计华为、小米商品类,及构造方法
华为:
class huaWei {
public String brand = "华为";
public int size = 20;
public int price = 3000;
public String configure = "mate40e全网通(8G+128G)(5G版)";
public int inventory ;
public int sumPrice ;
public huaWei(int numhw) {
System.out.println("品牌"+this.brand + " " +"尺寸"+ this.size + " " +"单价"+this.price + " " + "总价"+numhw*price + " "+"配置" + this.configure + " " + "库存"+numhw);
}
}
小米:
class xiaoMi {
public String brand = "小米";
public int size = 30;
public int price = 3500;
public String configure = "小米11,为发烧而生";
public int inventory ;
public int sumPrice ;
public xiaoMi(int numxm) {
System.out.println("品牌"+this.brand + " " +"尺寸"+ this.size + " " +"单价" +this.price + " " +"总价"+numxm*price + " "+"配置" + this.configure + " " +"库存"+ numxm);
}
}
这里设计了带有一个参数的构造方法,原因是案例要求输入商品入库数量,这样才能根据入库数量求出库存和,商品总价。
设计Main方法,输入数据
在Java中,输入是需要导包的,就像C语言写的#inlcude<stdio.h>引头文件类似。输入导的是Scanner包。也可以直接导util.*,这个包包含了更多的方法。导包格式为:
import java.包名+;
通过导包,我们可以使用Scanner类,这就是Java输入的类,先实例化一个对象,对象名随意。但还是建议起的有意义一些,让人看得明白,在=号右边的圆括号中的System.in是因为我们是从控制台输入数据,所以需要加上这个参数。
Scanner scanner = new Scanner(System.in);
整个main方法:
import java.util.*;
/**
* 案例2-1 商品入库
*/
public class Solution0913 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numHW = 0;
int numXM=0;
System.out.println("请输入华为的商品数量 ");
numHW = scanner.nextInt();
System.out.println("华为的商品信息:");
huaWei huaWei1 = new huaWei(numHW);
System.out.println("请输入小米的商品数量 ");
numXM=scanner.nextInt();
System.out.println("小米的商品信息:");
xiaoMi xiaoMi=new xiaoMi(numXM);
}
}
案例测试:
点击运行后,提示输入华为的商品数量,在这里我输入2,方便测试。
控制台打印出华为的商品信息,并自动换行,后再提示输入小米的商品数量。这里我同样输入2。
这样2-1案例就完成了。
3.2 案例2-2 小明都可以买什么
案例信息:
编写一个智能购物计算小程序,在一家商店有书本、铅笔、橡皮、可乐、零食五种商品,商品价格如表2-8所示。
商品名称 | 价格(元) |
---|---|
书本 | 12 |
铅笔 | 1 |
橡皮 | 2 |
可乐 | 3 |
零食 | 5 |
假如你带了20元,且必须购买一本书,剩余的钱可以购买那些商品?可以购买几件?购买完还剩多钱?
案例设计思路:将5中零食都设计成类,属性是他们的价格。用20减去一本书的钱还有8块钱,在用这8块钱分别除其他4中商品的价格,如果不能整除的就取模,算出还剩多少钱。最后打印结果。
设计5种商品类
class book{
int price=12;
}
class pencil{
int price=1;
}
class eraser{
int price=2;
}
class coco{
int price=3;
}
class food{
int price=5;
}
main方法:
/**
* 案例2-2 小明都买什么
*/
public class solution2_2 {
static int money=20;
public static void main(String[] args) {
book bookBought=new book();
// 20快买了一本书还剩8快。
money=money-bookBought.price;
pencil pencil=new pencil();
int countPencil=money/pencil.price;
System.out.println("还可以买"+countPencil+"支笔");
eraser eraser=new eraser();
int countEraser=money/eraser.price;
System.out.println("还可以买"+countEraser+"个橡皮");
coco coco=new coco();
int countCoco=money/coco.price;
int resultMoney=money%coco.price;
System.out.println("还可以买"+countCoco+"瓶可乐"+"还剩"+resultMoney+"元");
food food=new food();
int countFood=money/food.price;
int resultMoeny2=money%food.price;
System.out.println("还可以买"+countFood+"包零食"+"还剩"+resultMoeny2+"元");
}
}
案例测试:
运行结果:
结尾:
以上就是这次的两个案例,主要还是多体会Java面向对象性语言的特性,一切皆对象。用对象解决问题。