一、for语句
for(初始化语句; 循环判断语句; 循环后的操作表达式){
循环体;
}
for循环的初始化表达式能否定义在for循环外面?
可以.
无限循环: for(;;){} while(true){}
for循环的初始化表达式和判断条件以及控制循环语句能否有多条?
可以
for(int i = 0, j = 100; (i <= 100) && (j >= 0); i++,j--){
System.out.println(i+","+j);
}
例题:
求出1到100之间的既是3的倍数又是5倍数的数字之和.
public class Task02 {
public static void main(String[] args) {
int sum = 0;
for(int i=1; i<=100; i++){
if(i%3==0 && i%5 == 0){
// System.out.println(i);
sum +=i;
}
}
System.out.println(sum);
}
}
找出所有三位数中, 满足如下要求的数字, 并求和
1.数字的个位数不为7;
2.数字的十位数不为5;
3.数字的百位数不为3;
public class Task03 {
public static void main(String[] args) {
int sum = 0;
for(int i=100; i<=999; i++){
int a = i%10;
int b = i/10%10;
int c = i/100;
if(a!=7 && b!=5 && c!=3){
// System.out.println(i);
sum += i;
}
}
System.out.println(sum);
}
}
1.打印1到100之内的整数,但数字中包含9的要跳过
2.每行输出5个满足条件的数,之间用空格分隔
3.如:1 2 3 4 5
public class Ex02 {
public static void main(String[] args) {
int num = 1;
for(int i=1; i<=99; i++){
int a = i%10;
int b = i/10;
if(a!=9 && b!=9){
System.out.print(i + " ");
if(num%5 == 0)
System.out.println();
num++;
}
}
}
}
循环录入学员Java课程的成绩(学员数量由键盘录入),统计分数大于等于80分的学生的比例。
import java.util.Scanner;
public class Ex06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = 0;
System.out.println("请输入总学生数:");
int total = sc.nextInt();
for(int i=1; i<=total; i++){
System.out.println("请输入第" + i + "个学生的成绩:");
int score = sc.nextInt();
if(score<80)
continue;
else
count++;
}
double rate = (double)count/total;
System.out.println("比例是:" + rate);
sc.close();
}
}
二、while语句
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
例题:
请按如下要求编写程序,打印菜单:
1.从键盘上录入一个1到5的数字;
2.当数字为1时打印菜单"新建";
当数字为2时打印菜单"打开文件";
当数字为3时打印菜单"保存";
当数字为4时打印菜单"刷新";
当数字为5时打印菜单"退出",并退出程序;
此行代码可以终止java程序运行:System.exit(0);
import java.util.Scanner;
public class Task04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean flag = true;
/*loo :*/ while(flag){
System.out.println("请输入1~5的数字:");
int num = sc.nextInt();
switch (num) {
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("退出");
//System.exit(0); -->方法2
//break loo; -->方法3
flag = false; // -->方法1
break;
default:
System.out.println("请输入1~5的数字!");
break;
}
}
sc.close();
}
}
分析以下需求,并用代码实现:
1.珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.0001米。
2.请问,我折叠多少次,可以折成珠穆朗玛峰的高度。(结果是27次)
public class Ex01 {
public static void main(String[] args) {
int mon = 8848;
double pap = 0.0001;
int count = 0;
while(pap<mon){
pap *= 2;
count++;
}
System.out.println("一共折叠" + count + "次");
}
}
循环录入某学生的5门课程的成绩并计算平均分。如果某分数录入为负,则停止录入并提示录入错误。
import java.util.Scanner;
public class Ex04 {
public static void main(String[] args) {
int sum = 0;
int avg = 0;
boolean flag = true;
String name;
Scanner sc = new Scanner(System.in);
while(flag){
System.out.println("请输入学生姓名:");
name = sc.nextLine();
System.out.println("请输入五门成绩:");
for(int i=1; i<=5; i++){
int score = sc.nextInt();
if(score<0){
System.out.println("输入错误,程序结束!");
flag = false;
}
sum += score;
}
avg = sum/5;
System.out.println(name + "的总成绩为:" + sum);
System.out.println(name + "的平均分为:" + avg);
System.out.println("-------------");
}
sc.close();
}
}
三、do..while语句
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
三种循环的区别
1. (for循环while)和do..while的区别, for循环和while循环都必须在条件满足的情况下, 才可以执行循环体.
然而do..while循环则不然, 它是无论条件是否满足, 都至少执行一次循环体.
2. for和while的区别, for循环在运行结束后, 内部定义的变量将会从内存中释放掉, 这时再想使用控制循环的变量.
就找不到了, 所以, 如果今后想要在循环结束后, 继续使用那个控制循环的变量, 推荐使用while循环.
四、break和continue语句
break作用:可以用于跳出循环和switch语句
break的应用场景:只能用于循环和switch语句
continue的应用场景:只能在循环中使用.
例题:
假设一个简单的在ATM的取款过程如下:首先提示用户输入密码(password),
最多只能输入3次,超过3次则提示用户"密码错误,请取卡"交易结束。
如果用户密码正确,再提示用户输入金额(amount),ATM只能输出100元的纸币,一次取钱数要求最低0元,最高1000元。
如果用户输入的金额符合上述要求,则打印输出用户取的钱数,最后提示用户"交易完成,请取卡",否则提示用户重新输入金额。假设用户密码是"111111"。
打印格式:
第一种情况:三次密码输入错误
请输入密码:2
密码错误,请重新输入:3
密码错误,请重新输入:4
密码错误,请取卡
第二种情况:密码输入正确,可以取款
请输入密码:2
密码错误,请重新输入:111111
请输入取款金额:3000
您输入的取款金额有误,请重新输入:900
请取走现金:900元
交易完成,请取卡
import java.util.Scanner;
public class Ex07 {
public static void main(String[] args) {
int passwd = 123;
int count = 1;
Scanner sc = new Scanner(System.in);
System.out.println("请输入密码:");
while(true){
int userPWD = sc.nextInt();
if(userPWD != passwd){
if(count == 3){
System.out.println("密码错误!请取卡!");
break;
}
System.out.println("密码错误,请重新输入:");
count++;
} else{
System.out.println("请输入取款金额:");
while(true){
int money = sc.nextInt();
if(money%100==0 && money>=100 &&money<=3000){
System.out.println("请取走您的现金:" + money + "元");
System.out.println("交易完成,请取卡");
System.exit(0);
} else {
System.out.println("您输入的金额有误,请重新输入:");
}
}
}
}
sc.close();
}
}