键盘输入函数参量无法使用,直接在main中设置却可以是怎们回事。。。

西红柿炒鸡蛋呀 哈尔滨佛学院 2019-11-21 08:04:55
import java.util.Scanner;
//简单的超市管理
class Goods{//商品类
private String name,producer;
private float price;
private int number;
Goods(String a,String b,float c,int d){//构造商品
name=a;
producer=b;
price=c;
number=d;
}
Goods(){//商品类的无参构造函数
name="";
producer="";
price=0;
number=0;
}
int Sale(float money,int num){//商品销售
money-=num*this.price;
this.number-=num;
return 0;
}
int ShowMe() {//显示商品信息
System.out.print("商品名称\t"+"商品价格\t"+"商品产地"+"\t"+"商品数量\n");
System.out.print(name +"\t"+price+"\t"+producer+"\t"+number+"\n");
return 1;
}
int Add(Goods goods) {//商品上架,个数加一
goods.number+=1;
return 1;
}
public String GetName() {
String n=name;
return n;
}
public void SetName(String n) {
name=n;
}
public String GetProducer() {
String p=producer;
return p;
}
public void SetProducer(String p) {
producer=p;
}
public float GetPrice() {
float p=price;
return p;
}
public void SetPrice(float p) {
price=p;
}
public int GetNumber() {
int n=number;
return n;
}
public void SetNumber(int num) {
number=num;
}
}

class Supermarket{
private Goods goods[];
private int GoodsNum;
private float money;
public void Check() {//盘点各类商品的数量
System.out.print("商品名称\t商品数量\n");
for(int i=0;i<GoodsNum;i++) {
System.out.print(goods[i].GetName()+"\t"+goods[i].GetNumber()+"\n");
}
}
public Goods Query(String a) {//查询,根据商品名称或产地
int i=0;
Goods goods_2=new Goods();
for(;i<GoodsNum;i++) {
if(a==goods[i].GetName()||a==goods[i].GetProducer()) {
goods_2=goods[i];
break;
}
}
if(i==GoodsNum) {
System.out.print("\n查询不到该商品!\n");
}
return goods_2;
}

public Goods Query(float a) {//查询,根据价格
int n=0;
Goods goods_2=new Goods();
for(;n<GoodsNum;n++) {
if(a==goods[n].GetPrice()) {
goods_2=goods[n];
break;
}

}
if(n==GoodsNum)
System.out.print("\n查询不到该商品!\n");
return goods_2;
}

public void Add(String a,String b,float c,int d) {
Goods goods_1=new Goods(a,b,c,d);
System.out.print(goods_1.ShowMe()+"\n");
goods[GoodsNum++]=goods_1;
}

public void Delete(String a) {//根据商品名称和产地来查询删除商品

int i=0;
for(;i<GoodsNum;i++) {
if(a==goods[i].GetName()||a==goods[i].GetProducer()) {
for(;i<GoodsNum;) {
goods[i]=goods[++i];
}
GoodsNum--;
System.out.print("\n删除商品名称或者商品产地为"+a+"的商品成功!\n");
break;
}
else continue;
}
if(i==GoodsNum) {
System.out.print("\n未找到该商品,删除商品失败!\n");
}
}

public void Delete(float a) {//根据商品的价格来查询删除商品

int n=0;
for(;n<GoodsNum;n++) {
if(a==goods[n].GetPrice()) {
for(;n<GoodsNum;) {
goods[n]=goods[++n];
}
GoodsNum--;
System.out.print("\n删除商品价格为"+a+"的商品成功!\n");
break;
}
else continue;
}
if(n==GoodsNum) {
System.out.print("\n未找到该商品,删除商品失败!\n");
}
}

public void Sale(String a,int num){//出售商品
Goods goods_3=new Goods();
goods_3=Query(a);
if(money<goods_3.GetPrice()*num) {
System.out.print("\n余额不足!\n");
}
if(num>goods_3.GetNumber()) {
System.out.print("\n商品不足!\n");
}
else {
System.out.print("\n购买成功!\n");
Query(a).Sale(money, num);
System.out.print("\n您的余额为:"+money+"\n");
}
}

Supermarket(){}//超市类的无参构造

Supermarket(Goods[] good,int GoodsNum){//超市类的有参构造
money=5000;
goods=new Goods[100];
this.GoodsNum=GoodsNum;
for(int i=0;i<GoodsNum;i++) {
goods[i]=good[i];
}
}

public void PrintGoods(Goods goods) {
goods.ShowMe();
}
}

public class SYBG_2_4 {

public static void main(String[] args) {
// TODO 自动生成的方法存根
Goods[] goods= { new Goods("牙膏","中国",20,88),
new Goods("火腿","中国",1,100),
new Goods("铅笔","中国",1,88),
new Goods("文具盒","中国",30,88),
};

Supermarket supm=new Supermarket(goods,4);
System.out.print("******************欢迎进入超市******************************\n");
System.out.print("增加商品请输入1\n删除商品请输入2\n"
+ "查询商品请输入3\n盘点商品请输入4\n商品销售请输入5\n"
+ "退出系统请输入0\n");
Scanner sc=new Scanner(System.in);
int i=1;
while(i<100) {
int a=sc.nextInt();
switch(a) {
case 1:
System.out.print("\n***************************添加商品**********************************\n");
System.out.print("请依次输入商品名称,产地,价格,数量:\n");
String q1=sc.next();
String q2=sc.next();
float w1=sc.nextFloat();
int w2=sc.nextInt();
supm.Add(q1, q2,w1,w2);
break;
case 2:
System.out.print("\n***********************删除商品*************************************************\n");
System.out.print("请输入要删除的商品的名称或者产地:\n");
String n=sc.next();
supm.Delete(n);
break;
case 3:
System.out.print("\n***************************查询商品**************************************\n");
System.out.print("\n请输入要查询的商品名称\n");
String na=sc.next();
supm.PrintGoods(supm.Query(na));
break;
case 4:
System.out.print("\n****************************盘点商品****************************************\n");
supm.Check();
break;
case 5:
System.out.print("\n***************************销售商品************************************************\n");
System.out.print("\n请输入想要购买的商品的商品名称,以及数量:\n");
String na_2=sc.next();
int numb=sc.nextInt();
supm.Sale(na_2, numb);
break;
case 0:
i=100;
System.out.print("\n******************************成功退出超市系统!**********************************\n");
break;
default:
System.out.print("\n****************************输入错误,请按照规则重新输入数字!**********************\n");
break;
}
}
sc.close();

}
}
...全文
129 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
引用 3 楼 清泉流响、的回复:
if(a==goods[i].GetName()||a==goods[i].GetProducer()) 这里,字符串比较实用 equals
谢谢大佬,我已经弄懂了。
回复
清泉流响、 2019-11-29
if(a==goods[i].GetName()||a==goods[i].GetProducer()) 这里,字符串比较实用 equals
回复
没有大佬来看看嘛。。。
回复

这是怎们回事啊
回复
相关推荐
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2019-11-21 08:04
社区公告
暂无公告