1.第三章 选择结构(一)
1.概念
A:嗨,我们晚上去吃个排骨汤吧
B:我现在牙还在疼,如果到晚上的时候不疼了我们就一起去
2. 什么是if选择结构
1.语法:
if () { // 括号里必须是布尔条件表达式
//代码块,只有一条语句的时候大括号可以省略,但是不建议那么做
}
如:之前的问题我们可以套用语法
if(张浩的java成绩>90分){
获得MP4作为奖励
}
流程图:
针对之前的问题,有两种实现方式,一是使用Scanner方式实现,二是声明变量
这里给出声明变量的方式,另一种实现方式自己实现
double score=90.0;
if(score>90){ //判断是否大于90分
System.out.println("老师说不错,奖励一个MP4");
}
System.out.println("程序结束");
2.复杂条件下的if选择结构
运算符 | 表达式 | 说 明 |
---|---|---|
&& | 条件****1 && 条件****2 | 仅仅两个条件同时为真,结果为真 |
|| | 条件****1 || 条件****2 | 只要两个条件有一个为真,结果为真 |
! | ! 条件 | 条件为真时,结果为假****条件为假时,结果为真 |
运算符优先级顺序:
!>算术运算符>比较运算符>&&>||
张浩的Java成绩大于98分,而且音乐成绩大于80分,老师会奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也会奖励他
我们可以用( score1 >98 && score2 > 80 ) || ( score1 == 100 && score2 > 70 )就相当于下面这串代码:
int score1 = 100; // 张浩的Java成绩
int score2 = 72; // 张浩的音乐成绩
if ( ( score1 >98&& score2 > 80 )
|| ( score1 == 100 && score2 > 70 ) ){
System.out.println("老师说:不错,奖励一个MP4!");
}
System.out.println("程序结束");
## 3.
使用if-else选择结构
原本使用两个基本if选择结构
现在可以使用if-else选择结构实现比上面好用多了
i
f
(
条
件
)
/
/
代
码
块
1
e
l
s
e
/
/
代
码
块
2
if ( 条件 ) { //代码块1 }else { //代码块2 }
if(条件)//代码块1else//代码块2
i f ( 张 浩 J a v a 成 绩 > 98 ) 奖 励 一 个 M P 4 ; e l s e 惩 罚 进 行 编 码 ; if (张浩Java成绩> 98 ) { 奖励一个MP4;}else { 惩罚进行编码;} if(张浩Java成绩>98)奖励一个MP4;else惩罚进行编码;
流程图:
double score=91;
if(score>98){
System.out.println("奖励一个MP4");
}else{
System.out.println("考的有点不好,惩罚");
}
4.使用多重if选择结构
在我们的之前学习过程中,都是判断两种情况,不是怎么样就是怎么样
在实际生活中是可能出现区间选择的,如:分数的评级
成绩>=80 :良好 成绩>=60 :中等成绩<60 :差
类似这样,单个的if无法完成,多个if又比较麻烦,那就可以使用我们即将学习的多重if
i
f
(
成
绩
>
=
80
)
/
/
代
码
块
1
e
l
s
e
i
f
(
成
绩
>
=
60
)
/
/
代
码
块
2
e
l
s
e
/
/
代
码
块
3
if ( 成绩>=80) { //代码块1 } else if (成绩>=60) { //代码块2 } else { //代码块3 }
if(成绩>=80)//代码块1elseif(成绩>=60)//代码块2else//代码块3
流程图:
代码:
问题:成绩>=80 :良好 成绩>=60 :中等成绩<60 :差
思考:if里面的条件顺序是否可以随意更换
int score=77;
if(score>=80){
System.out.println("良好");
}else if(score>=60){
System.out.println("中等");
}else{
System.out.println("差");
}
System.out.println("程序结束");
5.为什么使用嵌套if选择结构
宝宝:今晚我们去看电影吧?
小饼干:好啊,不过晚于6点还有其他事就不去了
分析:女是答应去的,但是有前提条件就是不能迟于6点钟
这里就相当于有两个if条件,第一个条件满足才会执行后面的内容
问题:学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组
分析:
如果进入决赛 再看是男还是女,如果是男进入男子组女就进入女子组。这就使用到了嵌套if选择结构
if(条件1) { //外面的条件判断
if(条件2) { //里面的条件判断
//代码块1
} else {
//代码块2
}
} else {
//代码块3
}
流程图:
代码:
int m=8;
String sex="女";
if(m<10){ //外层判断
if(sex.equals("男")){ //内层判断
System.out.println("宝宝");
}else if(sex.equals("女")){
System.out.println("饼干");
}
}else{
System.out.println("淘汰了回家去吧朋友");
}
System.out.println("程序结束");
第四章 选择结构(二)
6. 为什么使用switch选择结构
韩嫣参加计算机编程大赛
如果获得第一名,将参加麻省理工大学组织的1个月夏令营
如果获得第二名,将奖励惠普笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,不给任何奖励
int mingCi=2;
if(mingCi==1){
System.out.println("参加夏令营活动");
}else if(mingCi==2){
System.out.println("奖励笔记本一部");
}else if(mingCi==3){
System.out.println("奖励移动硬盘一个");
}else{
System.out.println("没有奖励");
}
用之前学习的方法亦可以解决问题,但是使用以上的多重if选择结构比较复杂和啰嗦,
现在可以使用switch结构来解决这样的问题,switch解决的是等值判断
语
法
:
s
w
i
t
c
h
(
表
达
式
)
/
/
b
y
t
e
s
h
o
t
i
n
t
c
h
a
r
枚
举
j
d
k
1.7
之
后
有
S
t
r
i
n
g
类
型
c
a
s
e
常
量
1
:
b
r
e
a
k
;
c
a
s
e
常
量
2
:
b
r
e
a
k
;
c
a
s
e
常
量
3
:
b
r
e
a
k
;
.
.
.
d
e
f
a
u
l
t
:
b
r
e
a
k
;
语法:switch(表达式){ //byte shot int char 枚举 jdk1.7之后有String类型case 常量1: break;case 常量2: break;case 常量3: break;...default:break;}
语法:switch(表达式)//byteshotintchar枚举jdk1.7之后有String类型case常量1:break;case常量2:break;case常量3:break;...default:break;
如何使用:
/**
-
1.常量名不可重复
-
2.每一个case后面要有break结束语
-
3.default可以在任何位置,除了在最后break可以省略在其他位置都不可省略(题意要求的除外)
-
建议都放在最后
-
4.switch后面的表达式类型只能是int byte short char 枚举 和jdk1.7以后的String
-
5.case后面的常量不是一定要连续的
-
6.表达式是哪个就会跳转到相对于的case语句
*/int mingCi=2; switch(mingCi){ case 1: System.out.println("参加夏令营活动"); break; case 2: System.out.println("奖励笔记本一部"); break; case 3: System.out.println("奖励移动硬盘一个"); break; default: System.out.println("没有奖励"); break; } System.out.println("程序结束");
-
-
常见 3种错误:
7.比较switch和多重if选择结构
相同点:
都是用来处理多分支条件的结构
1.不同点:
switch结构:
只能处理等值条件判断的情况
多重if选择结构:
没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况
选择结构总结:
到目前为止我们学习过五种选择结构:
基本if选择结构: 处理单一或者组合条件的情况
if-else选择结构:处理简单的条件分支情况
多重if选择结构:处理复杂的条件分支情况
嵌套if选择结构:用于较为复杂的流程控制
switch:选择结构
多重分支并且条件判断是等值判断的情况。
2.为什么要处理系统异常:
switch结构中我们常常输入的是int类型的值,但是用户不知道,可能会输入其他类型的值,这样的话就会报出输入类型不匹配的异常,为了避免这种情况的出现,我们可以在最开始的时候对其进行判断和限制
方法如下;
if(input.hasNextInt()){
//这里是相关的seitch语句
}else{
//如果输入的不是数字
System.out.println("请输入正确的数字");
}
第五章 循环结构(一)
8.循环
如果用我们之前的知识打印一百次好好学习天天向上,需要写100次输出语句很麻烦。
System.out.println(“第1遍写:好好学习,天天向上!”);
System.out.println(“第2遍写:好好学习,天天向上!");
System.out.println(“第3遍写:好好学习,天天向上!”);
System.out.println(“第4遍写:好好学习,天天向上!");
……
System.out.println(“第9999遍写:好好学习,天天向上!");
System.out.println(“第10000遍写:好好学习,天天向上!");
9.什么是循环:
循环条件
循环操作
10.什么是while循环
KaTeX parse error: Expected '}', got 'EOF' at end of input: … i ++;}
流程图:
特点:先判断,再执行
编码规范:缩进、换行
11.使用while循环
1.确定循环条件和循环操作
-
套用while语法写出代码
3.检查循环是否能够退出
流程图:
1.打印 50 份试卷
分析:能否用循环解决
若能,找到循环操作和循环条件以及明确循环变量
p
u
b
l
i
c
s
t
a
t
i
c
v
o
i
d
m
a
i
n
(
S
t
r
i
n
g
[
]
a
r
g
s
)
i
n
t
c
o
u
n
t
=
1
;
w
h
i
l
e
(
c
o
u
n
t
<
=
50
)
S
y
s
t
e
m
.
o
u
t
.
p
r
i
n
t
l
n
(
"
打
印
第
"
+
c
o
u
n
t
+
"
份
试
卷
"
)
;
c
o
u
n
t
+
+
;
public static void main(String[] args) { int count = 1; while(count <= 50){ System.out.println("打印第" +count+ "份试卷"); count++; }}
publicstaticvoidmain(String[]args)intcount=1;while(count<=50)System.out.println("打印第"+count+"份试卷");count++;
2.老师每天检查张浩的学习任务是否合格。如果不合格,则继续进行。
老师给张浩安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分
System.out.print("合格了吗?(y/n):");
String answer = input.next();
while(!"y".equals(answer)) {
System.out.println("上午阅读教材!");
System.out.println("下午上机编程!\n");
System.out.print("合格了吗?(y/n):");
answer = input.next();
}
System.out.println("完成学习任务!");
12.do-while循环
d o 循 环 操 作 w h i l e ( 循 环 条 件 ) ; do { 循环操作 } while ( 循环条件 ); do循环操作while(循环条件);
先执行一遍循环操作,再判断是否符合条件,符合则继续执行,否则退出;
注:最后的分号要注意加上
流程图:
特点:先执行,再判断
do{
System.out.println("上机编写程序!");
System.out.print("合格了吗?(y/n)");
answer = input.next();
System.out.println("");
}while(!"y".equals(answer));
System.out.println("恭喜你通过了测试!");
13.while 和 do-while的区别
不同点:
语法不同:
执行次序不同
初始情况不满足条件时:
while循环一次都不执行
do-while循环不管任何情况都会执行一次
第六章 循环结构(二)
14.为什么使用for循环
有很多问题用我们之前的whie循环是可以的,也可以使用我们现在for循环,类似于运动员有的擅长跑,有的擅长短跑,但是都是长跑的。我们的循环也是一样,只是他们都有自己擅长的领域。
对比for循环的结构和while循环的结构,其实结构都是一样的只是每个部分所在的位置有所不同,之前所在的是多行的内容现在放到一个括号里面了,所以更简洁了。执行顺序可以根据while循环的执行顺序自己先猜测下。
int i=0;
while(i<100){
System.out.println("好好学习!");
i++;
}
for比while更简洁
for ( int i = 0 ; i < 100 ; i++ ) {
System.out.println("好好学习!");
}
代码规范:格式对齐、代码的缩进
15.如何使用for循环
1.使用for循环结构的步骤
分析循环条件和循环操作
套用for语法写出代码
检查循环是否能够退出
语
法
:
f
o
r
(
表
达
式
1
;
表
达
式
2
;
表
达
式
3
)
循
环
操
作
语法:for(表达式1;表达式2;表达式3){ 循环操作}
语法:for(表达式1;表达式2;表达式3)循环操作
每个表达式之间用分号隔开
2.循环输入某同学S1结业考试的5门课成绩,并计算平均分
分析:是否能用循环做,循环次数是否为固定的。
做出如下的效果图
Scanner sc = new Scanner(System.in);
System.out.print("请输入学生的姓名:");
double score=0;
double sum=0;
for(int i=1;i<=5;i++){
System.out.println("请输入第"+i+"门课程的成绩:");
score=sc.nextDouble();
sum+=score;
}
double avg=sum/5;
System.out.println("平均分是:"+avg);
练习2:写出如下格式的加法表
分析是否适合使用循环,用什么循环,循环的次数是固定的么?
分析:先分别打印出0~6,再分别打印出6~0,然后做和运算即可。
参考代码
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个值:");
int num=sc.nextInt();
for(int i=0,j=num;i<=num;i++,j--){
System.out.println(i+"+"+j+"="+(i+j));
}
常见问题1:
缺乏变量的初始化,但可以在for循环上面的初始化
常见问题2:
表达式之间用分号隔开
常见问题3:
缺乏表达式2或表达式3,都会使得循环进入死循环。但是编译没错。
输
出
加
法
表
:
f
o
r
(
i
n
t
i
=
0
,
j
=
v
a
l
;
i
<
=
v
a
l
;
i
+
+
,
j
−
−
)
S
y
s
t
e
m
.
o
u
t
.
p
r
i
n
t
l
n
(
i
+
"
+
"
+
j
+
"
=
"
+
(
i
+
j
)
)
;
输出加法表: for( int i = 0, j = val; i<=val; i++, j-- ){ System.out.println(i + " + " + j + " = " + (i+j)); }
输出加法表:for(inti=0,j=val;i<=val;i++,j−−)System.out.println(i+"+"+j+"="+(i+j));
-
使用for循环:
-
循环初始化:i = 0;j = 输入值
-
循环条件:i<=输入值
-
循环操作:计算i+j
-
循环变量的改变:i++,j–
16.为什么需要break语句
int i = 2;
switch(i){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
}
//其他语句
回顾之前的break在switch中的用法,遇到break就跳出当前语句;
17.如何使用break语句
循环录入成绩,判断录入正确性。录入错误,使用break语 句 立刻跳出循环;否则,累加求和
for(int i = 0; i < 5; i++){ //循环5次录入5门课成绩
System.out.print("请输入第" + (i+1) + "门课的成绩: ");
score = input.nextInt();
if(score < 0){ //输入负数
isNegative = true;
break;
}
sum = sum + score; //累加求和
}
18.什么是continue语句
continue :只能用在循环里
continue 作用:跳过循环体中剩余的语句而执行下一次循环
语
法
:
w
h
i
l
e
(
)
c
o
n
t
i
n
u
e
;
/
/
通
常
与
条
件
语
句
一
起
使
用
加
速
循
环
语法:while(){continue; //通常与条件语句一起使用加速循环}
语法:while()continue;//通常与条件语句一起使用加速循环
循环录入Java课的学生成绩,统计分数大于等于80分的学生比例
分析:通过循环输入分数获得大于等于80分的人数,如果大于80分的就执行num++,否则不执行num++操作
显出如图的效果
for (int i = 0; i < total; i++) {
System.out.print("请输入第" + (i + 1) + "位学生的成绩: ");
score = input.nextInt();
if (score < 80) {
continue;
}
num++;
}
System.out.println("80分以上的学生人数是: " + num);
double rate = num *1.0 / total * 100; //计算比例
System.out.println("80分以上的学生所占的比例为:" + rate + "%");
19.对比break和continue
使用场合:break用于switch结构和循环结构中
continue一般用于循环结构中
作用(循环结构中):
break 语句终止某个循环,程序跳转到循环外的下一条语句
continue跳出本次循环,继而执行下一次的循环
补充:return 结束当前方法的执行并退出,返回到调用该方法的语句处。(具体讲解在方法处)
20.循环结构总结
语法:
区别2:执行顺序
while 循环:先判断,再执行
do-while循环:先执行,再判断
for循环:先判断,再执行
区别3:适用情况
循环次数确定的情况,通常选用for循环
循环次数不确定的情况,通常选用while或do-while循环
第七章 数组
21.什么数组
1.数组基本要素
标识符:数组的名称,用于区分不同的数组
数组元素:向数组中存放的数据
元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问
元素类型:数组元素的数据类型
2.数组长度固定不变,避免数组越界
22.如何使用数组
1.使用数组四步走
数据类型 数组名[];
数据类型 [] 数组名; //常用写法
int [] score1;
int score2[];
String [] name;
2.声明数组
数据类型 [] 数组名 = new 数据类型[数组长度];
int [] num = new int [10];
3.分配空间
方式一:
一个一个的赋值:
…
int []um = new int[10];
num[0]=10;
num[1]=11;
num[2]=20;
…
方式二:
一起赋值
int [] num={11,21,33};
int [] n = new int[]{22,33,21,22}; //这里不能指定数组的长度,大括号里有几个数就默认数组的长度是几了
方式三:
动态地从键盘录入信息并赋值
Scanner sc = new Scanner(System.in);
for(int i=0;i<30;i++){
score[i]=sc.nextInt();
}
for(int i=0;i<30;i++){
score[i]=sc.nextInt();
}
4.处理数据
计算5位学生的平均分:
int [ ] score = {60, 80, 90, 70, 85};
double avg;
avg = (score[0] + score[1] + score[2] + score[3] + score[4])/5;
但是如果像上面写法的话还是会有弊端的,如:学生的个数有变动,那我们的循环次数和求平均分的时候除以的数都需要修改,我们有一个方法避免修改多处
动态的获取数组的长度。 score.length
23.常见错误
int [] score= new int[];
int [] score= new int[2];
score[0]=11;
score[1]=11;
score[2]=11; //下标越界了
int [] score;
score={11,22,33,21};
- 使用数组的步骤是什么?
有一个数列:8,4,2,1,23,344,12
循环输出数列的值
求数列中所有数值的和
猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
2.数组排序
使用java.util.Arrays类
java.util包提供了许多工具类
Arrays类提供操作数组的方法
如排序、查询
Arrays类的sort()方法:对数组进行升序排列
24.Arrary常用方法
int [] arr1={12,21,10};
int [] arr2={12,21,10};
int [] arr3={8,21,10};
//1 equals(arr1,arr2) 比较arr1 和 arr2是否相等
boolean b = Arrays.equals(arr1,arr2);
boolean c = Arrays.equals(arr1,arr3);
System.out.println(b); //true
System.out.println(c); //false
=======================================================
//2. sort(array) 对数组array进行升序排序
System.out.println(Arrays.toString(arr3));
Arrays.sort(arr3);
System.out.println(Arrays.toString(arr3));
===============================================================================================
//void fill(array,fill); 把数组中元素都换成fill
Arrays.fill(arr3, 0);
System.out.println(Arrays.toString(arr3));
==============================================================
//copyOf(array,length) 把数组赋值成一个length长度的数组,返回的类型和复制的数组一致
int[] of = Arrays.copyOf(arr1, 5);
System.out.println(Arrays.toString(of));
============================================================
//int binarySearch(array,val) 查询元素val在数组array中的下标的位置,前提要求
//先对数组进行升序的排序,显示的是排序后的元素下标
Arrays.sort(arr3); //排序后 8 10 21
int search = Arrays.binarySearch(arr3, 21);
System.out.println(search);
15. Arrays类
boolean equals(array1,array2) | 比较array1和array2两个数组是否相等 |
---|---|
sort(array) | 对数组array的元素进行升序排列 |
String toString(array) | 将一个数组array转换成一个字符串 |
void fill(array,val) | 把数组array所有元素都赋值为****val |
copyOf(array,length) | 把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致 |
int binarySearch(array, val) | 查询元素值val在数组array中的下标(要求数组中元素已经按升序排列) |
第八章 循环结构进阶
26.为什么使用二重循环
外层循环控制班级数目,内层循环控制每个班级学员数目
使用二重循环实现
for(int i = 0; i <classNum; i++){
sum = 0.0;
System.out.println("请输入第" + (i+1) + "个班级的成绩");
for(int j = 0; j < score.length; j++){
System.out.print("第" + (j+1) + "个学员的成绩:");
score[j] = input.nextInt();
sum = sum + score[j];
}
aver [i] = sum / score.length; //计算平均分
System.out.println("第"+(i+1)+"个班级平均分" + aver [i] + "\n");
}
27什么是二重循环
-
1. 一个循环体内又包含另一个完整的循 2. 语法: while的双重循环 while(循环条件1) { //循环操作1 while(循环条件2) { //循环操作2 } } do { //循环操作1 do { //循环操作2 }while(循环条件1); }while(循环条件2); for(循环条件1) { //循环操作1 for(循环条件2) { //循环操作2 } } while(循环条件1) { //循环操作1 for(循环条件2) { //循环操作2 } } 特点: 外层循环一次,内层循环一遍 ## 28.如何使用二重循环 1.打印四边形的星星 提示:外层循环控制行数,内层循环控制列数 //打印四边形的星星 for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ System.out.print("*"); } System.out.println(); } ==================================================================== 2. 打印如图所示的图案 //打印直角三角形 Scanner sc = new Scanner(System.in); System.out.println("请输入三角形的行数:"); int num=sc.nextInt(); for(int i=1;i<=num;i++){ for(int j=1;j<=(2*i-1);j++){ System.out.print("*"); } System.out.println(); } ===================================================== 3.打印倒直角三角形 //打印直角三角形 Scanner sc = new Scanner(System.in); System.out.println("请输入三角形的行数:"); int num=sc.nextInt(); for(int i=1;i<=num;i++){ for(int j=1;j<=(num+1-i);j++){ System.out.print("*"); } System.out.println(); } ================================================================================= 打印等腰三角形(如下图效果) 参考代码: //打印等腰三角形 Scanner sc = new Scanner(System.in); System.out.print("请输入您要打印的行数:"); int num=sc.nextInt(); for(int i=1;i<=num;i++){ for(int j=1;j<=num-i;j++){ System.out.print(" "); } for(int k=1;k<=(2*i-1);k++){ System.out.print("*"); } System.out.println(); } ============================================================================== 冒泡排序: 一共是比较了数组长度的-1轮,每一轮比较的次数都是比上一次少一 //打印冒泡 int [] arr={21,77,23,32,1,99}; System.out.println("排序之前:"); for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } System.out.println(); for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-i-1;j++){ if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } System.out.println("排序之后:"); for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } ============================================================================= //若有3个班级各4名学员参赛,计算每个班级参赛学员平均分,统计成绩大于80分学员数 Scanner sc = new Scanner(System.in); double avg=0; double sum=0; double score=0; int num=0; for(int i=1;i<=3;i++){ System.out.println("请输入第 "+i+"个班级的成绩:"); sum=0; for(int j=1;j<=4;j++){ System.out.print("请输入第 "+j+"个同学的成绩:"); score=sc.nextDouble(); sum+=score; if(score<80){ continue; } num++; } System.out.println("第 "+i+"个班的平均分是:"+sum/4); } System.out.println("80分以上的学院个数为:"+num); =========================================================== 循环和break相结合的联系 Scanner sc = new Scanner(System.in); String answer=""; int num=0; for(int i=1;i<=5;i++){ System.out.println("欢迎光临第 "+i+"家店");
1. for(int j=1;j<=3;j++){ System.out.print("要离开么(y/n): "); answer=sc.next(); if(answer.equals("y")){ System.out.println("离店结账"); break; } num++; } System.out.println("一共买了 "+num+"件衣服"); }
29.冒泡排序
冒泡排序速记口诀(升序)
N 个数字来排队
两两相比小靠前
外层循环 N-1
内层循环 N-1-I
30.在二重循环中使用break
1.使用二重循环解决
外层循环控制去每个专卖店
内层循环控制买衣服过程
使用break退出内层循环
for(int i = 0; i < 5; i++){
System.out.println("欢迎光临第" + (i+1) + "家专卖店");
for(int j = 0; j < 3; j++){
System.out.println("要离开吗(y/n)?");
choice = input.nextLine();
if("y".equals(choice)){
break;
}
System.out.println("买了一件衣服");
count++; //计数器加1
}
//……
}