黑马程序员技术交流社区
标题:
Java基础(2)(坚持坚持坚持坚持坚持)
[打印本页]
作者:
abckids
时间:
2016-7-11 22:20
标题:
Java基础(2)(坚持坚持坚持坚持坚持)
0、求和思想
定义一个变量,记录不断变化的数据 通过count记录num变化的次数
int count = 0;
int num=1;
count = count+1;
num = 2;
count = count+1;
1、运算符
算数运算符
+ - * / %
++ --
赋值运算符
+= : 拿运算符左边的变量和右边的式子的值进行运算,最后将运算后的结果赋值给左边的变量举例
int a = 1;
a += 1+1;
a= 3;
+= 隐含了一个强制类型转换
面试题
byte b = 1;
b = b +1;
b+=1 不会报错,因为隐含了强制类型转换,b = (byte)(b+1);
比较运算符
> < >= <= == !=
逻辑运算符
&& 短路与:如果左边的表达式结果为false,右边不在执行
|| 短路或:如果左边的表达式结果为true,右边不在执行
| 无论左边为什么,右边都执行
& 无论左边为什么,右边都执行
^ 一个数异或同一个数两次,结果还是这个数 a^b^b = a;注意面试题:互换两个数
三元运算符 三目运算符 条件表达式
表达式1 ? 表达式2 : 表达式3;
2、基本类型转换
隐士转换
小类型数据自动提升为大类型数据
byte,short,char ->int ->long->folat->double
显示转换
要转换的数据类型 变量名= (要转换的数据类型)值;
double强转int,小数全部干掉
3、Scanner类的使用
第一步导包
import java.util.Scanner;
第二部创建变量
Scanner scanner = new Scanner(System.in);//System.in是标准输入流,scanner是变量名,可以任意起
第三部调用方法
建议:每次调用nextXXX()方法之前给scanner对象重新赋值
int num = scanner.nextInt();
String str = scanner.next();
4、Math类,String
String str = " 兰州拉面啦啦啦啦 ";//字符串对象
int len = str.length();//获取字符串长度
String subString = str.substring(1,2);//包左不包右,对str没有影响
String newStr = str.trim();//去掉字符串两端的空格,对str没有影响
long num = Math.round(3.3);//3
Math.ceil(double d):返回大于等于该数的最小整数
Math.floor(double d)返回小于等于该数的最大整数 -1.1
5、小票案例
/*
超市管理系统
展示商品报价单
购物小票:
让用户输入每种货物的购买数量
计算汇总的变量
判断总金额和少林寺两种数据是否满足打折条件,满足就打折
打印购物小票
数据四舍五入及强制小数转整数
*/
import java.util.Scanner;
public class Supermarket {
public static void main(String[] args) {
/*
商品报价单
1、显示商品报价单
2、用户输入购买数量
*/
String slsName = "少林寺酥饼核桃"; //名称
String slsID = "090115"; //编号
double slsPrice = 15.5; //单价
String slsUnit = "个"; //单位
int slsNumber; //数量
double slsMoney; //金额
String skName = "皇家特供尚康杂粮牡丹饼(复合营养型)";
String skID = "090027";
double skPrice = 14.5;
String skUnit = "个";
int skNumber;
double skMoney;
//1、显示商品报价单
System.out.println(" 欢迎光临");
System.out.println();
System.out.println("商品编号 商品名称 商品单价 商品计价单位");
System.out.println(slsID+" "+slsName+" "+slsPrice+" "+slsUnit);
System.out.println(skID+" "+skName+" "+skPrice+" "+skUnit);
//2、用户输入购买数量
Scanner sc = new Scanner(System.in);
System.out.println();
System.out.println("请输入您要购买的"+slsName+"数量:");
slsNumber = sc.nextInt();//输入少林寺酥饼核桃 的购买数量
slsMoney = slsPrice * slsNumber;//少林寺酥饼核桃 的总价
System.out.println("请输入您要购买的"+skName+"数量:");
skNumber = sc.nextInt();//输入 皇家特供尚康杂粮牡丹饼(复合营养型) 的购买数量
skMoney = skPrice * skNumber;//皇家特供尚康杂粮牡丹饼(复合营养型) 的总价
/*
票头
*/
System.out.println(" 欢 迎 光 临 ");
System.out.println(" 品名 售价 数量 金额");
System.out.println("-------------------------------------------------------");
/*
票体
如果商品名称超过7个字,就截取前7个字+...
*/
System.out.println((slsName.length()>7 ? slsName.substring(0,7)+"...":slsName) + "("+slsID+") "+slsPrice+" * "+slsNumber+" = "+slsMoney);
System.out.println((skName.length()>7 ? skName.substring(0,7)+"...":skName) + "("+skID+") "+skPrice+" * "+skNumber+" = "+skMoney);
System.out.println("-------------------------------------------------------");
/*
票脚
统计购买了几种商品
统计购买了多少件商品
统计一共花了多少钱,在这里需要注意有优惠条件
*/
int totalItemsNumber = 2; //商品项数
int totalNumber = slsNumber+skNumber; //商品件数
double totalMoney = slsMoney+skMoney; //商品总金额
double afterTotalMoney = (totalMoney >= 1000&&slsNumber>=30) ? totalMoney*0.9:totalMoney;//打折优惠,如果总价 >=1000并且少林寺饼子的数量>=30 就打9折
System.out.println(totalItemsNumber+"项商品 共计:"+totalNumber+"件");
//在打印总金额时,超市显示四舍五入后的整数,不包含小数点,需要用到Math类四舍五入方法,及强制类型转换
afterTotalMoney = Math.round(afterTotalMoney);
System.out.println("总计:"+(int)afterTotalMoney+"元");
System.out.println("您真的太幸运了,本次打折活动为您节省了"+(totalMoney-(int)afterTotalMoney));
System.out.println("凭此小票换取发票");
}
}
作者:
xfbyxq
时间:
2016-7-11 22:57
;加强中田吕加加加
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2