查看“商苑面馆 :Java知识串讲”的源代码
←
商苑面馆 :Java知识串讲
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 任务二 JAVA程序开发基础 == ===2.1变量和表达式=== *[[Java练习:面馆点餐]] *Java控制台输入: <nowiki>import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 从键盘接收数据 // next方式接收字符串 System.out.println("next方式接收:"); String str1 = scan.next(); String str2 = "刀削面"; if(str1.equals(str2)){ System.out.println("您选择的是:" + str1); } scan.close(); } }</nowiki> ===2.2智能决策:选择结构=== ====三目运算符==== <nowiki>package demo1; import java.util.Scanner; public class happy08 { public static void main(String[] args) { // TODO Auto-generated method stub //int a = 10 ;int b = 20; //System.out.println(a==b); Scanner sc = new Scanner(System.in); System.out.println("客官,您是堂吃还是外卖?1.堂吃; 2.外卖"); String s = sc.next(); String s2 = (s.equals("1")) ? "堂吃一位" : "外送一位"; System.out.println(s2); } }</nowiki> ====if条件语句==== 第一种形式: <nowiki>public class Hello123 { public static void main(String[] args) { // TODO Auto-generated method stub // TODO Auto-generated method stub float mian = 10.0f;//面的价格 float suan = 2.0f;//酸梅汤 float total_pay =0f;//总钱数 Scanner sc = new Scanner(System.in); //问用户要几碗面? System.out.println("请问您要几碗面?"); int num = sc.nextInt(); total_pay = num * mian; //问顾客需不需要饮料(饮料2元一杯) System.out.println("请问您是否需要饮料?Y/n"); String s = sc.next( ); if( s.equals("y")){ total_pay = total_pay + num * suan; } System.out.printf("您一共消费了%f元",total_pay); sc.close(); } }</nowiki> 第2种形式: <nowiki>package demo1; import java.util.Scanner; public class Tangchi { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("客官,请问您是堂吃还是外送?" +"1.堂吃/2.外送"); String s = sc.next(); if(s.equals("1")){ System.out.println("堂吃一位!"); }else{ System.out.println("外送一位!"); } } }</nowiki> 第3种形式: <nowiki>package demo1; import java.util.Scanner; public class MianType { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("客官,您几位?"); int num = sc.nextInt(); System.out.println("请问你们吃什么面?"); System.out.println("a.老北京炸酱面;b.刀削面" +"c.油泼面"); String s = sc.next(); if(s.equals("a")){ System.out.printf("老北京炸酱面%d碗",num); }else if(s.equals("b")){ System.out.printf("刀削面%d碗",num); }else if(s.equals("c")){ System.out.printf("油泼面%d碗",num); }else{ System.out.println("不好意思,您需求的面我们这里没有"); } } }</nowiki> ====if语句的嵌套==== <nowiki>询问顾客吃什么面,并询问其是否加蛋、加油渣 ?将结果反馈给后台。</nowiki> ====if语句的多条件==== <nowiki>import java.util.Scanner; public class happy09 { public static void main(String[] args) { // TODO Auto-generated method stub float price ;boolean fenqi;boolean firstpay; System.out.println("老板,请问手机多少钱?"); Scanner sc = new Scanner(System.in); price = sc.nextFloat(); System.out.println("老板,请问支不支持分期?"); fenqi = sc.nextBoolean(); System.out.println("老板,请问支不支持零首付?"); firstpay = sc.nextBoolean(); if(price <=1000 && fenqi == true && firstpay == true) { System.out.println("小Case!"); }else { System.out.println("太贵了,买不起~"); } } }</nowiki> ====switch语句==== <nowiki>package test; import java.util.Scanner; public class a7 { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner sc = new Scanner (System.in); while (true){ System.out.println("客观,请问您需要什么面:"); System.out.print("1.刀削面\n2.蛋黄面\n3.玉米面\n4.牛筋面\n5.幸福小丸仔面\n"); int m = sc.nextInt(); switch (m){ case 1: System.out.println("您选择的是刀削面"); break; case 2: System.out.println("您选择的是蛋黄面"); break; case 3: System.out.println("您选择的是玉米面"); break; case 4: System.out.println("您选择的是牛筋面"); break; case 5: System.out.println("您选择的是幸福小丸仔面"); break; default: System.out.println("对不起 输入错误"); break; } } } }</nowiki> ===2.3重复迭代:循环结构=== ====while循环==== <nowiki>package test; import java.util.Scanner; public class a7 { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner sc = new Scanner (System.in); while (true){ System.out.println("客观,请问您需要什么面:"); System.out.print("1.刀削面\n2.蛋黄面\n3.玉米面\n4.牛筋面\n5.幸福小丸仔面\n"); int m = sc.nextInt(); switch (m){ case 1: System.out.println("您选择的是刀削面"); break; case 2: System.out.println("您选择的是蛋黄面"); break; case 3: System.out.println("您选择的是玉米面"); break; case 4: System.out.println("您选择的是牛筋面"); break; case 5: System.out.println("您选择的是幸福小丸仔面"); break; default: System.out.println("对不起 输入错误"); break; } } } }</nowiki> ====for循环==== <nowiki>public class test02 { public static void main(String[] args) { // TODO Auto-generated method stub //String a ="hello"; String [] menu = {"阳春面","油泼面","鸡汤面","火鸡面","安徽板面"}; for(int i=0;i <5;i++){ System.out.println(menu[i]); } } }</nowiki> ====循环的嵌套==== <nowiki>public class test03 { public static void main(String[] args) { // TODO Auto-generated method stub String [] menu = {"阳春面","油泼面","鸡汤面","火鸡面","安徽板面"}; String [] drink = {"可乐","啤酒","雪碧"}; for(int i=0;i<5;i++){ for(int j=0;j<3;j++){ System.out.println(menu[i]+"+"+drink[j]); } } } }</nowiki> ===2.4 数据的存储--数组=== ====Java一维数组==== *面馆老板现在需要重新定义一份菜单,使用一维数组,他有几种方法呢 ? <nowiki>public class HelloWorld { public static void main(String []args) { //System.out.println("Hello World!"); String menu = new String[5]; menu[0] = "炸酱面"; menu[1] = "刀削面"; menu[2] = "安徽板面"; menu[3] = "葱油拌面"; menu[4] = "兰州拉面"; } }</nowiki> ====Java二维数组==== *面馆老板现在需要根据周一到周五,每天推出三款特价面,利用二维数组,他该怎么做呢 ? <nowiki> public class erweishuzu { public static void main(String[] args) { // TODO Auto-generated method stub //double [][] priec = new double [4] [3]; String [][] price = {{"炸酱面","方便面","版面"},{"刀削面","拉面","炒面"},{"牛肉面","鸡汤面","红烧面"},{"炒面","拉面","刀削面"},{"牛肉面","红烧面","鸡汤面"}}; for(int i=0;i<5;i++) { System.out.println("周"+(i+1)); for(int j = 0;j<3;j++) { System.out.println(price[i][j]); } } } } </nowiki> ====Javva for语句循环遍历数组==== *面馆老板用foreach语句遍历打印每一种面。 <nowiki></nowiki> ==任务三 JAVA面向对象程序编程(一)== ===3.1类和对象=== ====类和对象==== 类表示一个有共同性质的对象群体,而对象指的是具体的实实在在的物体。 类与对象的关系就如模具和铸件的关系,类是创建对象的模具,而对象则是由类这个模板制作出来的铸件 *举例来说,面馆按产品分类,可以分为几类? 面类,饮料类,小吃类 *每一类有什么具体的产品(对象)? 面类的对象: 火鸡面,炸酱面,刀削面,油泼面 饮料类对象: 可乐,雪碧,芬达,啤酒,江小白 小吃类对象: 炸串,卤蛋,麻辣烫,辣白菜 ====类的成员变量和成员方法==== 类一般由三部分组成:成员变量,成员方法和构造方法。 *类的成员变量是用来描述属性信息的,因此大部分成员变量是以名词的形式出现 *类的方法又被称为成员方法(函数),用来描述动作、行为和功能,是一段完成某种功能或操作的代码段 *构造方法的作用是创建一个对象并对其完成初始化。 以面馆的面类产品为例: <nowiki>面类: 名称; 类别:(干面,汤面,炒面) 价格; 份量; 口味; 数量 预定订单; 取消订单; 查看订单; 修改订单; 投诉店家;</nowiki> *面馆老板建立Noodle类,为它设计成员变量和成员方法 <nowiki>package 小马哥面馆; public class Noodle { //成员变量 //名称 public String name; //价格 public double price; //数量 public int num; /*构造方法*/ public Noodle(){ } public Noodle(String name,double price,int num){ this.name = name; this.price = price; this.num = num; } //成员方法 //预定订单; public void buy(String name,int num){ this.name =name; this.num = num; } //取消订单; public void cancel(String name,int n){ this.name =name; this.num = this.num -n; } //查看订单; public String lookup( ){ String s ="您订购的面是:\r\n"; s = "品名:"+ this.name +" 价格:"+ this.price +" 数量: "+ this.num; return s; } public static void main(String[] args) { // TODO Auto-generated method stub Noodle n1= new Noodle(); n1.name="手擀面"; n1.price = 10; n1.num = 2; System.out.println("您订的面是"+n1.name); System.out.println("价格:"+n1.price); System.out.println("数量"+ n1.num); Noodle n2 = new Noodle("炸酱面",12,3); System.out.println("您订的面是"+n2.name); System.out.println("价格:"+n2.price); System.out.println("数量"+ n2.num); Noodle n3 = new Noodle(); n3.buy("油泼面",2); n3.cancel("油泼面",1); String s2 =n3.lookup(); System.out.println(s2); } } </nowiki> 练习:怎样设计小吃类和饮料类 ? ===3.2 成员变量的完善=== 封装只是为了对类中的属性更好进行控制,因此要实现封装需要属性私有化,这样可以保证属性不会被其他类改动。然后使用公有方法把私有的属性暴露出去, 所以说封装分为三步:用private修饰变量,建立读方法、建立写方法 例:为刚才的面类成员变量进行封装:( <nowiki>package happy0319; public class Noodle { //成员变量 //名称 private String name; //价格 private double price; //数量 private int num; /*构造方法*/ public Noodle(){ } public Noodle(String name,double price,int num){ this.name = name; this.price = price; this.num = num; } //成员方法 public String getName(){ return this.name; } public double getPrice(){ return this.price; } public int getNum(){ return this.num; } //写方法 public boolean setName(String s){ this.name = s; return true; } public boolean setPrice(double p){ this.price = p; return true; } public boolean setNum(int n){ this.num = n; return true; } public String toString(){ return "名称:" +this.name+"价格:"+ this.price + "数量: " + this.num; } public static void main(String[] args) { // TODO Auto-generated method stub Noodle n2 = new Noodle("炸酱面",12,3); System.out.println("您订的面是"+n2.getName()); System.out.println("价格:"+n2.getPrice()); System.out.println("数量"+ n2.getNum()); n2.setName("老北京炸酱面"); n2.setPrice(15); n2.setNum(2); System.out.println("订单变更:"); System.out.println("您订的面是"+n2.getName()); System.out.println("价格:"+n2.getPrice()); System.out.println("数量"+ n2.getNum()); } } </nowiki> ==任务四 对象数组== 在我们学了类和对象之后,其实对象也可以创建数组,我们将它称作对象数组。 声明和创建对象数组的语法与基本类型值数组创建语法相同,例如: Book[] books=new Book[5]; 下面我们在测试类的main方法中建立了一个Noodle类的对象数组,并将其初始化。: <nowiki>package test2; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Noodle [] nl = new Noodle[3]; nl[0] = new Noodle("炸酱面",12.0,3); nl[1] = new Noodle("臊子面",14.0,2); nl[2] = new Noodle("刀削面",10.0,5); for(int i=0;i<3;i++){ if(nl[i].getName().equals("臊子面")){ System.out.println(nl[i].toString()); } } } } </nowiki> 现在,我们新建立一个新类FoodSet,表示食物仓库:在它里面可以建立一个Noodle类的对象数组 <nowiki>public class FoodSet { private Noodle[] n;//食物数组 private int num;//数组的个数 public FoodSet(Noodle[] n,int num ){ this.n = n; this.num = num; } public String toString(){ String s=""; for(int i=0;i<num;i++){ s += n[i].toString()+"\r\n"; } return s; } public static void main(String[] args) { // TODO Auto-generated method stub Noodle [] nl = new Noodle[3]; nl[0] = new Noodle("炸酱面",12.0,3); nl[1] = new Noodle("臊子面",14.0,2); nl[2] = new Noodle("刀削面",10.0,5); FoodSet f = new FoodSet(nl,3); System.out.println(f.toString()); } } </nowiki> 思考题:如何为FoodSet类建立查询方法 ?根据面名去查询特定产品的价格和数量。
返回至
商苑面馆 :Java知识串讲
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息