1.猜数字小游戏
分析案例:
1)需要生成1-100随机数字,可以用引用数据类型里的Random类,其中有一个生成随机整数的方法.
new Random().nextInt(int maxInt);maxInt代表可以生成0-最大值 之间的数字 但是不包括
这个最大值 比如 : nextInt(10);生成0-9 之间的随机整数 总共可以生成十种不同的数字
题意中是需要在1-100中生成一个随机的数字,也就是说 :
int randomNumber = new Random().nextInt(100);
这是在0-99中生成一个随机数字 只要在这个随机数字后+1 就可以得到1-100中任意的一个数字.
*****************************************************************
总结规律 : 如果要生成一个 4-10 中的一个随机数字 那么10 - 4 + 1 = 7 总共是7个数字
所以先写 new Random().nextInt(7); 这是生成0-6 总共7个数字 再在这个数字后边+4就可以
得到4-10之间的一个任意的随机数字也就是 new Random().nextInt(7)+4 ;
总结得到 如果要生成m到n之间的一个随机数字可以写为 new Random().nextInt(n-m+1)+m ;
2)键盘录入用户猜测的数字,昨天已经用过引用数据类型 Scanner 创建键盘录入对象后就可以调用其方法
进行接收录入信息 nextInt() 接收整数 next() 接收字符串.
Scanner sc = new Scanner(System.in);
int guessNumber = sc.nextInt();//得到用户输入的数字
3)对两个数字进行判断,根据条件判断结果进行不同输出,因为判断结果有三种或者以上,所以用三元运算符比较麻烦
在这里使用if语句进行判断.
逻辑分析 : guessNumber 和randomNumber 有基本的两种可能
a.相等 ,如果判断相等 直接中断程序直接输出即可
b.不等 ,其中又有两种可能(只要猜错就提示剩余输入次数所以在不等代码块后边可以加上一个提示输入语句) :
@guessNumber 大于 randomNumber 则输出相应语句
@guessNumber 小于 randomNumber 则输出相应语句
4)游戏中又规定有输入次数 最多为5次 ,假设第一次没有猜对,可以再次输入第二次,直到猜对或者5次机会用完
明显是个循环逻辑,如果机会用完则直接提示机会用完跳出循环即可,这个语句可以加载for循环里但是不能和上两个判断语句相连接即可
而且这个循环逻辑是要加在用户输入之前,对象一次创建可以多次使用(只要在它的生命周期内)
所以需要在得到用户输入数字之前到最后一个if判断句中间加一个for循环
for(int i = 0 ; i < 5 ; i++ ){ {2) 3)}{} }
至此,第一个案例猜数字小游戏完成,可以在其中重要位置加上修饰的输入 提示输入或者次数用完提示正确答案等,今天的主要内容是认识if判断语句
for循环语句
*****************************************************************************************************
重点掌握 : if(){ for(;;){ 关键字
* *
}esle if(){ * *break : 程序运行遇到break则直接跳出循环结束程序
* *
}esle{ * } *
* *continue : 程序运行遇到continue 则提前结束本次循环,继续进行下次循环
} * *
*****************************************************************************************************
break详细解释
* a: 作用
* 在loop/switch选择或者循环过程中,我们总是满足布尔表达条件才能执行对应的代码,然而在这些逻辑过程中,
可以使用一些关键字直接跳出正在执行的代码,去执行后边或者指定位置的代码,
这些关键字一旦出现就可以跳转语句执行顺序。
* b: 使用方式
* 无法单独使用,必须将break关键字置于switch或循环语句中
* c: 运行规律
* 不需要判断任何条件,只要遇到break变直接跳出执行后续代码。会完全跳出选择或者循环结构
* 只能跳出最近的代码块,不能跨越多级代码块
continue介绍
* a: 作用
* 提前结束本次循环,继续进行下次循环
* b: 使用方式
* 无法单独使用,必须将continue关键字置于循环语句中
* c:运行规律
* 不需要判断任何条件,只要遇到continue变直接跳出本轮循环进行下次循环
********************************************************************************************************************************
2.对小票代码进行重构 :
基本小票完成后加入业务逻辑:
a.判断结果并重新为变量赋值
如果商品总价超过300元,打95折
如果商品总价超过600元,打9折
如果商品总价超过1000元,总价打8折
如果商品总价超过1000元,并且少林寺酥饼核桃购买超过30份, 则总价打8折后,立减20
b.操作字符串数据
如果商品名称超过7个字,则截取前7个字加…完成小票商品名
c.使用户操作输入数据后可重新购买
1.代表开始购物
2.代表结账(打印小票)
3.代表不想买了,直接退出
分析 :
a.根据总金额以及购买数量进行重新的 变量赋值
这个重构位于原来代码的小票票脚位置,计算总金额打折,所以只需要代替元代码三元运算符即可.
用到if判断语句 根据题意 可以分为以下几个区间'
if(商品总价>=1000&&少林核桃数量>=30){
折后总价 = 商品总价 * 0.8 - 20 ;
}else if(商品总价>=1000){
折后总价 = 商品总价 * 0.8 ;
}else if(商品总价>=600&&商品总价<1000){
折后总价 = 商品总价 * 9 ;
}else if(商品总价>=300&&商品总价<600){
折后总价 = 商品总价 * 9.5 ;
}
----------------------------------------------------------------------
b.操作字符串数据
在小票的票体部分,原代码是三元运算符,只需要用if语句进行替换即可
c.使用户操作输入数据后可重新购买
1.代表开始购物 (列出价单,用户进行输入数量,也就是赋值数量时)
2.代表结账(打印小票)
3.代表不想买了,直接退出
可以根据switch语句进行具体的选择项进行选择
只需要把具体的代码块分为三个具体选择方案即可
伪代码 :
switch(用户输入的选择){
case 1:{
列出价单,用户进行输入数量,也就是赋值数量
break;
}
case 2:{
打印小票
break;
}
case 3:{
break;
}
}
****************************************************************************************
注意 :
1)需要在switch外加上一个无限循环,否则会造成选择case之后就跳出选择结束代码,我们需要的是重新进行再一次的选择.
2)在执行完支付或者退出时 需要把执行1赋进去的值进行清空,否则会造成之后如果直接结账就会有数据的情况.
|
|