【Java全栈学习笔记-U1-day05】循环+跳转语句
day05 循环+跳转语句
文章目录
课程目标
-
循环结构
While循环、do…while循环、for循环
-
跳转语句
Break、Continue
一、循环结构
while循环、do…while循环、for循环
1.1 while循环
语法:
while(循环条件){
循环体
}
由用户主导的不确定次数的循环:
//模拟练习作业是否合格。
Scanner input = new Scanner(System.in);
System.out.println("作业合格了吗?");
String answer = input.next(); //y|n
//循环判断
while(!answer.equals("y")){ //不合格
//循环体
System.out.println("上午学习,下午编码...");
//询问:修改循环条件的变量
System.out.println("合格了吗?");
answer = input.next();
}
示例:模拟超市结算小程序:
public class Demo2 {
public static void main(String[] args) {
//综合练习 :模拟超市结算小程序
//模拟练习作业是否合格.
int sum = 0; //累加器
int count = 0; //累加件数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入商品的价格");
int price = scanner.nextInt(); //n 0 30
//循环判断
while(price != 0){ //不合格
//累计总价
sum = sum + price;
count = count + 1;
System.out.println("请输入商品的价格");
price = scanner.nextInt(); //n
}
System.out.println("共" + count + "件商品");
System.out.println("总价为:" + sum);
}
1.2 do…while循环
特点:
先执行在判断
语法:
do{
循环体...
}while(循环条件);
固定次数的循环:
//使用do...while循环显示1-5的数
int i = 1; //记录循环次数
do{
System.out.println(i);
i++; //累计次数
}while(i <= 5);
用户主导的不确定次数的循环:
public static void main(String[] args) {
String temp;
Scanner input = new Scanner(System.in);
do {
System.out.println("上午学习,下午练习");
//询问
System.out.println("老师,我作业合格了吗:"); //y|n
temp = input.next();
}while (!temp.equals("y"));
}
1.3 for循环
作用:
一般用于固定次数循环
语法:
for(变量初始化;变量条件;变量自增自减){
循环体….
}
显示1-5的数
for (int i = 1; i <= 5; i++){
System.out.println(i);
}
循环输入五门课的成绩,求平均分
public static void main(String[] args) {
//循环输入五门课的成绩,求平均分
Scanner input = new Scanner(System.in);
//循环输入五门课的成绩
int sum = 0;
for (int i = 1; i <= 5; i++) {
System.out.println("请输入第" + i + "门课的成绩");
int grade = input.nextInt();
//累计
sum = sum + grade;
}
//求平均分
int avg = sum / 5;
System.out.println("平均分是:" + avg);
}
二、跳转语句
break:表示退出循环
contine:表示退出本次循环,继续下一次
跳转语句一般和if语句结合使用
if(条件)
跳转语句
综合练习: 实现用户输入用户名和密码实现登入,要求最多三次机会
//实现用户输入用户名和密码实现存入,要求最多三次机会
public static void main(String[] args) {
//用户名为:admin 密码:123
Scanner input= new Scanner(System.in);
for (int i = 1; i <= 3; i++) {
System.out.println("请输入用户名:");
String username = input.next();
System.out.println("请输入密码:");
String passsword = input.next();
if (username.equals("admin") && passsword.equals("123")) {
System.out.println("登入成功");
break;
}else {
int temp = 3 - i;
if (temp == 0) {
System.out.println("登录失败,三次机会已经用完");
} else {
System.out.println("登入失败,你还有" + temp + "次机会");
}
}
}
}
补充
1.数据类型转换
数据类型由低到高的顺序
byte → char → short → int → long → float → double
2.数据类型转换方式
2.1 隐式转换
数据类型由低到高自动转
2.2 强制(显式)转换
数据类型由高到低
2.3语法
(目标类型)变量;
(int)a;
作业
作业一:使用三种循环分别实现 1-100所有数之和,并熟记三种循环语句
/**
* @Author: 开心就好9905
* @Date: 2024/2/22 16:26
* @Description:作业一:使用三种循环分别实现 1-100所有数之和,并熟记三种循环语句
*/
public class Three_Cycles {
public static void main(String[] args) {
int i = 1; //循环起始点
int sum = 0; //总和
//1. while循环
/*while(i < 101){
sum = sum + i;
i++;
}*/
//2. do..while循环
/*do {
sum = sum + i;
i++;
}while (i <= 100);*/
//3. for循环
for (i = 1; i <= 100; i++) {
sum = sum + i;
}
System.out.println(sum);
}
}
作业二 :使用for循环结构实现:从键盘上接受从周一至周五每天的学习时间(以小时为单位),并计算每日平均学习时间。
import java.util.Scanner;
/**
* @Author: 开心就好9905
* @Date: 2024/2/22 16:47
* @Description:作业二 :使用for循环结构实现:从键盘上接受从周一至周五每天的学习时间(以小时为单位),并计算每日平均学习时间。
*/
public class Average_Study_Time {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
double time; //每日学习时间(h)
double sum_time = 0; //总学习时间
double avg_time; //平均学习时间
for (int i = 1; i < 6; i++) {
System.out.print("请输入周" + i + "的学习时间:");
time = input.nextDouble();
sum_time = sum_time + time;
}
avg_time = sum_time / 5;
System.out.println("周平均学习时长为:" + avg_time + "小时");
}
}
作业三:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就输出单词“Flip”,遇到5的倍数就输出单词“Flop”,既为3的倍数由为5的倍数则输出单词“FlipFlop”,其余情况下输出当前数字。
提示:
→ 使用%运算符取得数字的余数。
→循环从循环变量i为1开始i循环次数为100。
/**
* @Author: 开心就好9905
* @Date: 2024/2/22 18:02
* @Description:作业三:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就输出单词“Flip”,遇到5的倍数就输出单词“Flop”,
* 既为3的倍数由为5的倍数则输出单词“FlipFlop”,其余情况下输出当前数字。
* 提示:
* --- 使用%运算符取得数字的余数。
* --- 循环从循环变量i为1开始i循环次数为100。
*/
public class FlipFlop {
public static void main(String[] args) {
for (int i = 1; i < 101; i++) {
if (i % 3 == 0 && i % 5 == 0){
System.out.println("FilpFlop:" + i);
}else if(i % 3 == 0){
System.out.println("Filp:" + i);
}else if (i % 5 == 0){
System.out.println("Flop:" + i);
}else{
System.out.println(i);
}
}
}
}
作业四:编写java程序,实现接收用户输入的正整数,输出该数的阶乘。例如,输入数据4,则输出4!=1 × 2 × 3 × 4 =24。要求:限制输入的数据为1~10,否则提示“无效数据”并结束程序。
注意:实现累乘
int sum=1;
import java.util.Scanner;
/**
* @Author: 开心就好9905
* @Date: 2024/2/22 18:32
* @Description:作业四:编写java程序,实现接收用户输入的正整数,输出该数的阶乘。
* 例如,输入数据4,则输出4!=1 × 2 × 3 × 4 =24。要求:限制输入的数据为1~10,否则提示“无效数据”并结束程序。
* 注意:实现累乘
* int sum=1;
*/
public class Multiplicative {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n; //用户输入的正整数
int sum = 1; //阶乘结果
System.out.print("请输入一个正整数:");
n = input.nextInt();
if (n > 0 && n < 11){
System.out.print(n + "!=");
for (int i = n; i > 0; i--) {
sum = sum * i;
System.out.print(i);
if (i != 1){
System.out.print("x");
}
}
System.out.print("=" + sum);
}else {
System.out.println("无效数据");
}
}
}
作业五:
import java.util.Scanner;
/**
* @Author: 开心就好9905
* @Date: 2024/2/22 18:51
* @Description:需求说明:商场对顾客的年龄层次进行调查计算各年龄层次的顾客比例
*/
public class Rate_of_Customers {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int customer_age; //顾客年龄信息
int upper_30 = 0; //大于三十岁的人数
int lower_30 = 0; //小于三十岁的人数
int count = 0; //有效顾客信息总人数
double rate_upper; //大于30岁的比例
double rate_lower; //小于30岁的比例
for (int i = 1; i < 11; i++) {
System.out.print("请输入第" + i + "位顾客的年龄:");
customer_age = input.nextInt();
if (customer_age <= 0){
System.out.println("第" + i +"号顾客信息有误,不录入。");
}else if(customer_age < 30){
lower_30++;
count++;
}else if (customer_age >= 30){
upper_30++;
count++;
}
}
rate_lower = lower_30 * 100 / count;
rate_upper = upper_30 * 100 / count;
System.out.println("30岁以下的顾客比例是:" + rate_lower + "%");
System.out.println("30岁以上的顾客比例是:" + rate_upper + "%");
}
}
作业六:将上节选做题、使用do…while循环实现,模拟超市结算小程序.
import java.util.Scanner;
/**
* @Author: 开心就好9905
* @Date: 2024/2/23 0:10
* @Description:将上节选做题、使用do...while循环实现,模拟超市结算小程序
*/
public class Supermarket {
public static void main(String[] args) {
int price; //输入商品的价格
int sum = 0; //计算总价
int count = 0; //计算件数
Scanner input = new Scanner(System.in);
System.out.print("请输入商品的价格:");
price = input.nextInt();
do {
sum = sum + price;
count++;
System.out.print("请输入商品的价格:");
price = input.nextInt();
}while (price != 0);
System.out.println("共购买" + count + "件商品,实付金额为:" + sum);
}
}
选做
鸡兔同笼是我国古代著名的趣题之一。大约在1500之前,《孙子算经》中记载了这样一道题目:今有稚兔同笼,上有三十五头,下有九十四足,问鸡兔各几只?试编写程序解决这个问题。
提示:
→定义变量chookNum,rabbitNum分别表示鸡的数量, 兔子的数量,二者有如下两个关系。
chookNum + rabbitNum = 35;
2 * chookNum + 4*rabbitNum = 94;
→鸡的数量chookNum的范围是0<=chookNum<=35,利用循环结构实现。
/**
* @Author: 开心就好9905
* @Date: 2024/2/23 0:20
* @Description:鸡兔同笼是我国古代著名的趣题之一。大约在1500之前,《孙子算经》中记载了这样一道题目:今有稚兔同笼,
* 上有三十五头,下有九十四足,问鸡兔各几只?试编写程序解决这个问题。
*/
public class Chicken_Rabbit {
public static void main(String[] args) {
/*
//方法一:利用方程关系式推算出结果,但没有循环结构,
//但不符合题目要求,pass,写着玩一下
Scanner input = new Scanner(System.in);
int chickenNum; //鸡的数量
int rabbitNum; //兔的数量
//int heads = input.nextInt(); //头的数量
//int legs = input.nextInt(); //腿的数量
int heads = 35; //头的数量
int legs = 94; //腿的数量
//chickenNum + rabbitNum = heads;
//2 * chickenNum + 4 * rabbitNum = legs;
chickenNum = 2 * heads - legs / 2;
rabbitNum = legs / 2 - heads;
System.out.println("鸡有" + chickenNum + "只,兔有" + rabbitNum +"只。");
*/
//方法二:穷举
//Scanner input = new Scanner(System.in);
int chickenNum; //鸡的数量
int rabbitNum; //兔的数量
//int heads = input.nextInt(); //头的数量
//int legs = input.nextInt(); //腿的数量
int heads = 35; //头的数量
int legs = 94; //腿的数量
for (chickenNum = 1; chickenNum <=heads; chickenNum++){
for (rabbitNum = 1; rabbitNum <= heads; rabbitNum++){
if (chickenNum + rabbitNum == heads && chickenNum * 2 + rabbitNum * 4 == legs){
System.out.println("鸡有" + chickenNum + "只,兔有" + rabbitNum +"只。");
}
}
}
}
}