for循环
为什么使用for循环结构
for循环在数值循环方面会比while循环简洁,在面对有循环次数的要求时,首选for循环
什么是for循环
循环语句的主要作用是反复执行一段代码,直到满足一定条件为止,总结一下,可以把循环结构分成四个部分
-
初始阶段:设置循环的初始状态,,如设置记录循环次数的变量 i 为 0 -
循环体:重复执行的代码,即输出"hello word!" -
迭代部分:下一次循环开始前要执行的部分,在while循环结构中,他作为循环体的一部分,如使用 i++ ;经行循环次数的积累 -
循环条件:判断是否继续循环的条件,如使用" i < 100"判断循环次数时候已经达到了100。
在for循环结构中,这几个部分同样必不可少,不然循环结构就会出现错误。for循环的结构通常如下:
for(表达式1;表达式2;表达式3){
? ?//循环体
}
for循环流程图
这里的for就是循环结构的关键字。每个表达式的含义如下表格-:
表达式 | 形式 | 功能 | 举例 |
---|
表达式1 | 赋值语句 | 循环结构的初始部分,为循环变量赋初始值 | int i = 0 | 表达式2 | 条件语句 | 循环结构的循环条件 | i < 100 | 表达式3 | 赋值语句,通常使用++或--运算符 | 循环结构的迭代部分,通常用来修改循环变量的值 | i++ |
for关键字后括号中三个表达式必须用“ ; ”隔开。for循环中的这三个部分及{}中的循环体结构必须的四个组成部分完美的结合在一起了,非常简明
for的执行过程
for循环结构执行的顺序如下:
-
执行初始部分(int i = 0;) -
进行循环条件判断(i < 100;) -
根据循环条件判断,如果为true,则执行循环体;如果为false,则退出循环。(步骤4和步骤5均不执行) -
执行迭代部分,改变循环变量值(i++) -
依次重复步骤2 ~ 步骤4,直到退出for循环结构。
表达式1在for循环结构中只执行了一次
使用for循环结构
使用for循环输出1 ~ 10
package testfor;
?
public class Teat1 {
?
public static void main(String[] args) {
// for 循环 从1~10
// 步骤1; 步骤2 步骤4;
for (int i = 1; i <= 10; i++) {
System.out.println(i);// 步骤3
}
// 适合计数循环,不适合while循环,菜单循环推荐while
}
?
}
使用for循环求成绩平均数
package testfor;
?
import java.util.Scanner;
?
public class Test2 {
?
public static void main(String[] args) {
//循环输入某同学s1成绩
//步骤:
// 1.从扫描器接受用户输入的姓名
// 2.循环5次,每次都要接收用户输入的
// 3.每次循环,累计求和()
// 4.循环结束后,用总分除以5得出平均分
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = scanner.next();
double score = 0;
for (int num = 1; num <= 5; num++) {
System.out.println("请输入第"+num+"次成绩");
score += scanner.nextInt();
}
System.out.println(name+"的平均分是:"+(score/5));
scanner.close();
?
}
?
}
1 ~ 100不能被3整除的和
package testfor;
?
public class Test3 {
?
public static void main(String[] args) {
//1 ~ 100不能被3整数数的和
int sum = 0;
for (int i = 0; i < 100; i++) {
// 不是3的倍数(不能被三整除的)
if(i%3 != 0) {
sum += i;
}
}
System.out.println(sum);
}
?
}
break && continue
break
通过循环结构的学习,已经了解了在执行循环时要进行条件的判断。只有在条件为false的时候,才能结束循环,但是根据实际情况需要停止整个循环或者跳到程序的其他部分,这些都可以使用跳转语句实现,java一共有三种跳转语句:break;continue;return。
break的使用
package testbreak;
?
public class Test1 {
?
public static void main(String[] args) {
// break用法,跑10圈,第八圈退赛
for (int i = 0; i < 10; i++) {
System.out.println("跑"+i+"圈");
if (i == 8) {
System.out.println("我跑不动了!");
break;
}
}
}
?
}
?
continue
continue是在循环中起到跳过当前循环,但是不停止循环的作用。它跳过了该次循环之后仍然执行下一个循环。
package testbreak;
?
public class Testcontinue {
?
public static void main(String[] args) {
// break用法,跑10圈,第八圈退赛
for (int i = 0; i < 10; i++) {
System.out.println("跑"+i+"圈");
if (i == 8) {
System.out.println("我跑不动了!");
continue;
}
}
?
}
?
}
?
当月课堂练习
练习1:游戏选择菜单页面
package exDay12;
?
import java.util.Scanner;
?
public class Ex {
?
public static void main(String[] args) {
// 创建输入器
//保存输入的密码和用户名
//循环输入密码和用户值
//使用if在循环中显示错误和正确
//正确登录成功,错误给三次机会,
//输出错误和正确不同文本
Scanner input = new Scanner(System.in);
int a = 3;
while(true) {
a--;
System.out.print("请输入用户名:");
String name = input.next();
System.out.print("请输入密码:");
String password = input.next();
if((name.equals("jim") && (password.equals("123456")))){
System.out.println("欢迎登录MyShopping系统!");
break;
}else {
System.out.println("输入错误!您还有"+a+"机会!");
if(a == 0) {
System.out.println("\n对不起,您3次均输入错误");
break;
}
break;
}
}
input.close();
}
?
}
练习2:进入游戏房间提示
package exDay12;
?
import java.util.Scanner;
?
public class Ex02 {
?
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("欢迎进入青鸟游戏平台\n");
System.out.println("请选择您喜爱的游戏:\n");
System.out.println("********************************************************");
System.out.println("\t\t\t1.斗地主");
System.out.println("\t\t\t2.斗牛");
System.out.println("\t\t\t3.泡泡龙");
System.out.println("\t\t\t4.连连看");
System.out.println("********************************************************");
System.out.print("\n请选择,输入数字:");
int num = input.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;
}
input.close();
}
?
}
练习3:游戏晋级结算分数输出
package exDay12;
?
import java.util.Scanner;
?
public class Ex03 {
?
public static void main(String[] args) {
System.out.println("青鸟游戏平台 > 游戏晋级\n");
Scanner input = new Scanner(System.in);
int a = 0;
for (int i = 1; i > 0;i++ ) {
System.out.print("您正在玩第"+i+"局,成绩为:");
int num = input.nextInt();
System.out.print("继续玩下一局吗?(yes/no)");
String yes = input.next();
if(yes.equals("yes")) { // 继续游戏
System.out.println("进入下一局");
if(num >= 80) {
a++;
}//次数自增
if((a >= ?4) && (i == 5)) {
System.out.println("恭喜!通过一级");
}else if((a >= ?4) && (i == 5)) {
System.out.println("恭喜!通过二级");
}//晋级系统
if(i == 5) {
System.out.println("游戏结束!");
break;
}//结束游戏
}else if(yes.equals("no")) { // 不继续游戏
System.out.println("您已经中途退出游戏。");
System.out.println("对不起,您未能晋级,继续加油啊!");
break;
}else { // 输入错误
System.out.println("格式错误请重新输入第"+i+"局成绩!");
}// if结尾
}// for结尾
input.close();
}
?
}
练习4:游戏结算付费文本输出系统
package exDay12;
?
import java.util.Scanner;
?
public class Ex04 {
?
public static void main(String[] args) {
double moneyA = 10;
double moneyB = 20;
Scanner input = new Scanner(System.in);
System.out.println("青鸟游戏平台 > 游戏晋级\n");
System.out.println("请选择您玩的游戏类型:");
System.out.println("\t\t1.棋牌");
System.out.println("\t\t2.休闲竞技类");
int classA = input.nextInt();
System.out.println("请输入您的游戏时长:");
int time = input.nextInt();
if (classA == 1) {
if (time >= 10) {
System.out.println("您玩的是牌类游戏,时长是" + time+"小时,可以享受5折优惠,您需要支付"+(time*moneyA*0.5) + "游戏币");
}else {
System.out.println("您玩的是牌类游戏,时长是" + time+"小时,可以享受8折优惠,您需要支付"+(time*moneyA*0.8) + "游戏币");
}
}else if (classA == 2) {
if (time >= 10) {
System.out.println("您玩的是牌类游戏,时长是" + time+"小时,可以享受5折优惠,您需要支付"+(time*moneyB*0.5) ?+ "游戏币");
}else {
System.out.println("您玩的是牌类游戏,时长是" + time+"小时,可以享受8折优惠,您需要支付"+(time*moneyB*0.8) + "游戏币");
}
}else {
System.out.println("输入错误");
}
input.close();
}
?
}
练习5:游戏点击率结算
package exDay12;
?
import java.util.Scanner;
?
public class Ex05 {
?
public static void main(String[] args) {
System.out.println("青鸟游戏平台 > 游戏晋级\n");
Scanner input = new Scanner(System.in); // 创建输入器
double a = 0;
int num = 1;
for (; num <= 4; num++) {
System.out.print("请输入第" + num + "个游戏的点击率:");
int numA = input.nextInt();
if (numA >= 100) {
a++;
}
}
System.out.println("点击率大于100的游戏数是:" + a);
System.out.println("点击率大于一百的游戏所占的比例为:"+(num/(a - 1)*10)+"%");
input.close();
}
?
}
|