For循环
语法
for(表达式1(初始化变量);表达式2(循环条件);表达式3(迭代循环条件)){
循环操作4;
}
执行顺序
1->2->4_>3 2->4->3
for循环语法结构,打印成绩
import java.util.Scanner;
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName ForDemo1.java
* @Description for循环语法结构,打印成绩
* @createTime 2021年03月29日 10:34:00
*/
public class ForDemo1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入学员名称:");
String name = input.next();
//总分
double sum =0;
for (int i = 1; i <=5 ; i++) {
System.out.println("第"+i+"门课程的成绩为:");
double score = input.nextDouble();
sum = score+sum;
}
System.out.println(name+"5门成绩平均分为:"+(sum/5));
}
}
加法两种方式
import java.util.Scanner;
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName ForDemo2.java
* @Description 加法
* @createTime 2021年03月29日 10:50:00
*/
public class ForDemo2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数值");
int num = input.nextInt();
System.out.println("第一种方式");
for (int i = 0; i <=num ; i++) {
System.out.println(i+"+"+(num-i)+"="+(i+(num-i)));
}
System.out.println("第二种方式");
for (int i = 0,j=num; i <=num; i++,j--) {
System.out.println(i+"+"+j+"="+(i+j));
}
}
}
特点
- 初始化变量可以不写在for的语句中,可以定义成全局变量
- 循环条件可以不写,编译通过 ,会造成死循环
- 迭代次数可以不写,循环条件永远满足,造成死循环,如果不在for的语句上写,可以写在我们的循环体里面
- for语句里的所有参数都可以不写,但不能省略2个**;**编译通过,但是会造成死循环
代码实现 100以内不能被3整除的数之和
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName ForDemo3.java
* @Description 100以内不能被3整除的数之和
* @createTime 2021年03月30日 09:59:00
*/
public class ForDemo3 {
public static void main(String[] args) {
//存放和
int sum=0;
for (int i = 1; i <=100 ; i++) {
if(i%3!=0){
sum = sum+i;
}
}
System.out.println("100以内不能被3整除的数之和:"+sum);
}
}
计算客户比例
import java.util.Scanner;
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName ForDemo4.java
* @Description 计算客户比例
* @createTime 2021年03月30日 10:25:00
*/
public class ForDemo4 {
public static void main(String[] args) {
//存放30岁以上的人数
double count =0;
for (int i = 1; i <=10 ; i++) {
System.out.println("请输入第"+i+"位客户的年龄");
Scanner input = new Scanner(System.in);
int age = input.nextInt();
if(age>=30){
count++;
}
}
//30以上人数的比例
double discount30 =count/10;
//30以下人数的比例
double discout30v =(10-count)/10;
System.out.println("30岁以上的人的比例是:"+(discount30*100)+"%");
System.out.println("30岁以下的人的比例是:"+(discout30v*100)+"%");
}
}
break语句
作用
控制流程,跳出语句块,执行语句块下面的代码
通常和条件一起使用
代码实现-> 录入成绩,当录入有误时跳出循序,没有计算平均分
import java.util.Scanner;
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName ForDemo5.java
* @Description 录入成绩,当录入有误时跳出循序,没有计算平均分
* @createTime 2021年03月30日 10:48:00
*/
public class ForDemo5 {
public static void main(String[] args) {
//存放总成绩
double sum =0;
boolean isOk = true;
Scanner input = new Scanner(System.in);
System.out.println("请输入学生姓名:");
String name = input.next();
for (int i = 1; i <=5 ; i++) {
System.out.println("请录入第"+i+"门课程的成绩:");
double score = input.nextDouble();
if(score<0){
isOk = false;
break;
}
sum = sum+score;
}
if(isOk){
System.out.println(name+"的五门成绩的平均分是:"+sum/5);
}else {
System.out.println("分数录入有误,请重新录入");
}
}
}
1~10数字相加,当和大于20时跳出循序
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName ForDemo6.java
* @Description 1~10数字相加,当和大于20时跳出循序
* @createTime 2021年03月30日 11:03:00
*/
public class ForDemo6 {
public static void main(String[] args) {
int sum =0;
for (int i= 1; i <=10 ; i++) {
sum=sum+i;
if(sum>20){
System.out.println(i);
break;
}
}
}
}
continue语句
作用
跳出本次循环,执行下次循环
通常和if判断一起使用
只能用在循环体内
import java.util.Scanner;
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName ForDemo7.java
* @Description TODO
* @createTime 2021年03月31日 08:08:00
*/
public class ForDemo7 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//存放80以上人的人数
int num =0;
for (int i = 1; i <=10 ; i++) {
System.out.println("请输入第"+i+"位学生的成绩:");
double score = input.nextDouble();
if(score<80){
continue;
}
num++;
}
System.out.println("80以上的人数有:"+num);
System.out.println("所占比例为:"+(double)num/10);
}
break与continue的对比
-
break可以在switch与循环中使用
-
continue只能在我的循环中使用
-
break的作用:跳出循序,执行循序语句后面的代码
-
continue:跳出本次循环,执行下一次循环操作
-
碰到break还是我的continue,该下面的代码都不在执行
添加用户
import java.util.Scanner;
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName AddUser.java
* @Description 添加用户
* @createTime 2021年03月31日 08:56:00
*/
public class AddUser {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
for (int i=1;i<=3;i++){
System.out.println("请输入会员卡号:");
int num = input.nextInt();
if(num<1000||num>10000){
System.out.println("会员卡号输入有误(1000~9999)");
continue;
}
System.out.println("请输入生日:");
String br = input.next();
System.out.println("请输入积分");
int jf = input.nextInt();
System.out.println("你录入的会员信息是:");
System.out.println(num+"\t"+br+"\t"+jf);
}
System.out.println("程序结束!");
}
}
登录校验
import java.util.Scanner;
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName Verify.java
* @Description 校验
* @createTime 2021年03月31日 09:51:00
*/
public class Verify {
public static void main(String[] args) {
//用户名
String name ="hby";
//密码
int pwd = 123456;
Scanner input = new Scanner(System.in);
for (int i = 1; i <=3 ; i++) {
System.out.println("请输入你的用户名:");
String uname = input.next();
System.out.println("请输入你的密码:");
int upwd = input.nextInt();
if(!name.equals(uname)||pwd!=upwd){
System.out.println("输入有误,还有"+(3-i)+"次机会");
continue;
}else {
System.out.println("欢迎"+uname+"进入直播间!");
break;
}
}
}
}
目前所碰到的循序
while:先判断,在执行
while(循环条件){循环操作};
do-while:先执行,在判断
do{循环操作}while(循环条件);(分号不能忘记)
for:先判断,在执行
for(初始化变量;循环条件;迭代循环变量){
循环操作;
}
适用情况:for循环是固定次数的时候,其他的用while或do-while
/**
* @author xiaoDong
* @version 1.0.0
* @ClassName Rabbit.java
* @Description 兔子问题
* @createTime 2021年03月31日 10:41:00
*/
public class Rabbit {
public static void main(String[] args) {
//上个月兔子
int one =1;
//上上个月兔子
int two =1;
//存放总兔子
int sum =0;
//1对兔子在第3个月开始生新兔子
for (int i = 1; i <=12; i++) {
//第一个月 1
//第二个月 1
//第3个月 2
//第4个月 3
if(i<3){
sum =1;
}else {
sum = one+two;
two =one;
one = sum;
}
System.out.println("第"+i+"个月的兔子量为:"+sum);
}
}
}