目录
逻辑控制语句
条件分支结构
if … else
例:用户自己输入:商品单价、和商品数量
输入:实付金额6
如果:应付金额>500,打8折
判断实付金额够不够
输出:找零金额
Scanner console = new Scanner(System.in);
System.out.println("请输入商品单价:");
int price = console.nextInt();
System.out.println("请输入商品数量:");
int count = console.nextInt();
System.out.println("请输入实付金额:");
double money = console.nextInt();
// 应付金额
double sum = price * count;
if (sum >= 500) {
// 打8折
sum = sum * 0.8;
}
if (money >= sum) {
System.out.println("找零:" + (money - sum));
} else {
System.out.println("钱不够");
}
switch() - case
仅适用于判断是否相等的情况
括号内条件数据类型可选int\char\short\byte
JDK1.7之后,也支持字符串 String “” ;
switch (month) {
// case 后接的是要对比的值
// case 是具有穿透性的,除非遇到break;例如下面的,假如去掉所有break,将会输出 所有sout
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month + "月,一共有31天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(month + "月,一共有30天");
break;
case 2:
System.out.println(month + "月,一共有28天");
break;
default:
System.out.println(month + "月不存在");
break;
}
循环结构
for循环
int i = 1; // 循环的初始值 - 位置可以在for外面
// i <= 100 循环的条件,可以不写,不写就是死循环
// i++ 步长, 变化规律
for (i = 1; i <= 10; i++) {
// for循环体
sum += i;
}
// 死循环后继续写代码会报错
System.out.println("循环结束, i的值: " + i);
System.out.println("循环结束, sum的值: " + sum);
兔子问题
有一对兔子,从第3个月开始,每个月再生一对兔子,每个月有多少只兔子
规律:1 1 2 3 5 8 11
int f1 = 1; // 上上个月
int f2 = 1; // 上个月
int sum ;
for (int i = 3; i <= 10; i++) {
// 当前这个月的总数,应该是前面两个月的数量和
sum = f1 + f2;
f1 = f2;
f2 = sum;
System.out.println("第" + i + "个月的兔子总数是:" + sum);
}
while循环
while(条件): 当…的时候, 就…
特点: 不确定循环次数
累加问题
从1开始相加, 加到结果超过500为止
int i = 1; // 要加的数,变化的
int sum = 0; // 用来记录结果的
while(sum <= 500) {
sum += i;
i++;
}
System.out.println("超过500时, i是:" + i);//33
System.out.println("超过500时, sum是:" + sum);//528
猜数字游戏
猜数字v1.0
有猜数字游戏,其游戏规则为:程序内置一个 1 到 1000 之间的数字作为猜测的结果,
由用户猜测此数字。-> 控制台输入 Scanner
用户每猜测一次,由系统提示猜测结果:大了、小了或者猜对了;-> if
直到用户猜对结果,则提示游戏结束。-> 当用户没猜对,就继续猜
用户可以提前退出游戏,即,游戏过程中,如果用户录入数字0,则游戏终止。
int m=(int)(Math.random()*100);
System.out.println(m);
Scanner console=new Scanner(System.in);
System.out.println("请猜数字:");
int n=-1;
while(n!=m){
n=console.nextInt();
if (n==0){
System.out.println("已请求退出!");
break;
} else if (n<m){
System.out.println("小了");
System.out.println("请继续猜数字:");
}else if (n>m) {
System.out.println("大了");
System.out.println("请继续猜数字:");
}else {
System.out.println("猜对了");
}
}
do while循环
do-while(条件): 做… 直到…
在一定程度上,两种循环可以互相替换
特殊: 在第一次循环条件就不满足的时候
int a = 10;
// 第一次条件就不满足,while一次都不循环
while (a > 10) {
a --;
}
// 第一次条件就不满足,do一定会循环一次
do {
a--;
} while(a > 10);
//a1=10,a2=9
循环嵌套
break
结束当前最近的所有循环
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 3; j++) {
// 结束当前最近的所有循环,不再执行j,跳到下一个i
if (j == 1){
break;
}
System.out.println("i = " + i + ", j = " + j);
i = 0, j = 0
i = 1, j = 0
i = 2, j = 0
i = 3, j = 0
i = 4, j = 0
continue
结束当前本次循环
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 3; j++) {
// 结束当前本次循环
if (j == 1) {
// 结束这一次循环,继续执行下一个j
continue;
}
System.out.println("i = " + i + ", j = " + j);
}
}
i = 0, j = 0
i = 0, j = 2
i = 1, j = 0
i = 1, j = 2
x: y:
结束外层循环可借助的变量
x:for(int i = 0; i < 5; i++) {
y:for(int j = 0; j < 3; j++) {
if (j == 2) {
// 结束i循环-外层循环, 需要借助一个变量
break x;
}