语法:for(初始值表达式①;条件表达式②;迭代④){ //重复从第二步开始
//执行③
}
示例
package com.aura; /** * @className Loop1.java * @author lisir * @version V1.0 * @date 2020年10月21日--上午10:24:27 * @description * */ public class Loop1 { public static void main(String[] args) { //输出5次HelloWorld for(int i=1;i<=5;i++) { System.out.println("Hello World"); } //了解特殊 执行顺序 int j=0; for(System.out.println("初始值");j<5;System.out.println("迭代"),j++) { System.out.println("操作"); } //输出初始值的变化数据0 1 2 3 4 for(int i=0;i<5;i++) { System.out.println(i); } } }用for循环统计0~100中的奇数和 偶数和
package com.aura; /** * @className TestLoop.java * @author lisir * @version V1.0 * @date 2020年10月21日--上午10:59:05 * @description * */ public class TestLoop { public static void main(String[] args) { //统计1~100中的奇数和 int sum=0;//奇数和 int sum1=0;//偶数和 for(int i=1;i<=100;i++) { if(i%2!=0) { //i是奇数 sum=sum+i; }else { sum1+=i; } } System.out.println("奇数和:"+sum); System.out.println("偶数和:"+sum1); } }练习一 3000米的绳子,每次减半,减多少次小于5米?(忽略小数)
package com.aura; /** * @className TestLoop2.java * @author lisir * @version V1.0 * @date 2020年10月21日--上午11:19:42 * @description * */ public class TestLoop2 { public static void main(String[] args) { int count = 0; for(int i= 3000;i>=5;i/=2) { count++; } System.out.println(count); } }练习二 统计1~100以内,被7整除数的个数
package com.aura; /** * @className TestLoop3.java * @author lisir * @version V1.0 * @date 2020年10月21日--上午11:28:24 * @description * */ public class TestLoop3 { public static void main(String[] args) { int count = 0; for(int i=0;i<=100;i++) { if(i%7==0) { count++; } } System.out.println(count); } }练习三 水仙花数(100-999) 例:153=13+53+3^3
package com.aura; /** * @className TestLoop4.java * @author lisir * @version V1.0 * @date 2020年10月21日--上午11:40:04 * @description * */ public class TestLoop4 { public static void main(String[] args) { for(int i=100;i<=999;i++) { int ge = i%10; int shi = i/10%10; int bai = i/100; if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai) { System.out.println(i); } } } }语法:初始值①
while(条件表达式②){
操作③
迭代④
}
示例
package com.aura; /** * @className TestWhile.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午2:21:52 * @description * */ public class TestWhile { public static void main(String[] args) { //1~100之间奇数 、偶数和 int n=0;//奇数和 int m=0;//偶数和 int i=0;//初始值 while(i<=100) { if(i%2==0) { m+=i; }else { n+=i; } i++; } System.out.println(m); System.out.println(n); } }while循环改for循环
package com.aura; /** * @className TestWhile.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午2:21:52 * @description * */ public class TestWhile { public static void main(String[] args) { //1~100之间奇数 、偶数和 int n=0;//奇数和 int m=0;//偶数和 int i=0;//初始值 for(;i<=100;) { if(i%2==0) { m+=i; }else { n+=i; } i++; } System.out.println(m); System.out.println(n); } }总结:for循环与while循环是可以相互替换的,它们都是先判断再执行
语法: 初始值①
do{
操作②
迭代③
}while(条件表达式④);
示例 从键盘输入任意一个整数(正数,负数),统计个数,直到输入0,结束循环
package com.aura; import java.util.Scanner; /** * @className TestDowhile.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午2:35:12 * @description * */ public class TestDowhile { public static void main(String[] args) { Scanner input = new Scanner(System.in); int i = 0,j = 0;//i:正数的个数 j:负数的个数 //提示输入一个整数 System.out.println("请输入一个整数"); //初始值 int num = input.nextInt(); do { //操作 if(num>0) { i++; }else { j++; } //迭代 System.out.println("请输入一个整数"); num = input.nextInt(); }while(num!=0); System.out.println("正数个数:"+i+"负数个数"+j); System.out.println("程序结束"); } }1)可以出现在 switch 结构和循环结构中,其他地方不能出现
2)在循环中表示终止循环
3)break后面不执行任何输出
示例
package com.aura; /** * @className TestBreak.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午3:02:45 * @description * */ public class TestBreak { public static void main(String[] args) { // if(5>2) { // break; //报错 // } for(int i=1;i<=100;i++) { if(i%5==0) { break;//终止循环(结束循环) } System.out.println(i); } System.out.println("程序结束");//输出结果为1 2 3 4 程序结束 } }1)只能出现在循环中,其他地方不能出现
2)在循环中表示结束当前循环,进入下一次循环
示例
package com.aura; /** * @className TestBreak.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午3:02:45 * @description * */ public class TestBreak { public static void main(String[] args) { // if(5>2) { // continue; //报错 // } for(int i=1;i<=100;i++) { if(i%5==0) { continue;//终止循环(结束循环) } System.out.println(i); } System.out.println("程序结束");//输出结果不会有5的倍数 } }循环中又嵌套循别的循环
嵌套循环的特点:外层循环执行一次,内层循环执行至结束。
示例
package com.aura; /** * @className Forfor.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午3:23:59 * @description * */ public class Forfor { public static void main(String[] args) { for(int i=1;i<=5;i++) { for(int j=1;j<=3;j++) { System.out.print(j+"\t"); } System.out.println();//换行 } } }练习一
输出 *** *** *** *** package com.aura; /** * @className Test.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午3:38:48 * @description * */ public class Test { public static void main(String[] args) { for(int i=1;i<=4;i++) { for(int j=1;j<=3;j++) { System.out.print("*"); } System.out.println(); } } }练习二
输出 * ** *** **** package com.aura; /** * @className Test.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午3:38:48 * @description * */ public class Test { public static void main(String[] args) { for(int i=1;i<=4;i++) { for(int j=1;j<=i ;j++) { System.out.print("*"); } System.out.println(); } } }练习三
输出 * * * * * * * * * * package com.aura; /** * @className Test.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午3:38:48 * @description * */ public class Test { public static void main(String[] args) { for(int i=1;i<=4;i++) { for(int j=1;j<=4-i ;j++) { System.out.print(" "); } for(int k=1;k<=i;k++) { System.out.print("* "); } System.out.println(); } } }练习四
输出 * * * * * * * * * * * * * * * * package com.aura; /** * @className Test.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午3:38:48 * @description * */ public class Test { public static void main(String[] args) { for(int i=1;i<=4;i++) { for(int j=1;j<=4-i ;j++) { System.out.print(" "); } for(int k=1;k<=i;k++) { System.out.print("* "); } System.out.println(); } for(int i=1;i<=3;i++) { //空格 for(int j=1;j<=i;j++) { System.out.print(" "); } // * for(int k=1;k<=4-i;k++) { System.out.print("* "); } System.out.println(); } } }练习五 猜数游戏
package com.aura; import java.util.Random; import java.util.Scanner; /** * @className GussNum.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午4:23:17 * @description 猜数游戏 * */ public class GussNum { public static void main(String[] args) { Scanner input = new Scanner(System.in); //随机生成一个随机数(1~100) //接受键盘输入和随机数比较,大小提示一下 //while循环 //1生成随机数 Random rand =new Random(); int randNum = rand.nextInt(100)+1;//生成了随机数 需要的是1~100 rand.nextInt(100)是0~99 所以要+1 //键盘输入 System.out.println("请输入一个数:"); int num = input.nextInt(); while(randNum!=num) { if(num>randNum) { System.out.println("大了一点"); }else if(num<randNum){ System.out.println("小了一点"); } System.out.println("再猜"); num = input.nextInt(); } System.out.println("猜对了"); System.out.println("程序结束"); } }练习六
方法一:
package com.aura; /** * @className t.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午5:49:39 * @description *计算1~100之间的质数有多少个?将质数以及质数的总数打印再控制台 *最小的质数2 *特点:只能被1和本身整除 * */ public class t { public static void main(String[] args) { boolean flag = true; //是质数 int sum = 0; for(int i=2;i<=100;i++) { for(int j=2;j<=i-1;j++) { if(i%j==0) { //能整除说明不是质数 flag=false; break; } } if(flag) { System.out.println(i); sum+=i; } flag=true; } System.out.println("总和:"+sum); } }方法二:
package com.aura; /** * @className t.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午5:49:39 * @description * */ public class t { public static void main(String[] args) { boolean flag = true; //是质数 int sum = 0; long start = System.currentTimeMillis(); //系统当前时间 for(int i=2;i<=100;i++) { for(int j=2;j<=Math.sqrt(i);j++) { //除到i的平方根 if(i%j==0) { //能整除说明不是质数 flag=false; break; } } if(flag) { System.out.println(i); sum+=i; } flag=true; } long end = System.currentTimeMillis(); //系统当前时间 System.out.println("执行所用时间:"+(end-start)); System.out.println("总和:"+sum); } }方法三
package com.aura; /** * @className t.java * @author lisir * @version V1.0 * @date 2020年10月21日--下午5:49:39 * @description * */ public class t { public static void main(String[] args) { //boolean flag = true; //是质数 int sum = 0; long start = System.currentTimeMillis(); //系统当前时间 label:for(int i=2;i<=10000;i++) { for(int j=2;j<=Math.sqrt(i);j++) { //除到i的平方根 if(i%j==0) { //能整除说明不是质数 continue label; } } System.out.println(i); sum+=i; } long end = System.currentTimeMillis(); //系统当前时间 System.out.println("执行所用时间:"+(end-start)); System.out.println("总和:"+sum); } }问题:50个学院的姓名,记录28个学员成绩信息等记录
解决方案:可以用数组解决
数组就是类型相同的一组数据
数组概念:可以存储一组相同类型的数据
语法:类型[] 数组名 = new 类型[]{值1,值2……}
String[]names1 = new String[] {"111","222","333"}; String[]names2 = {"111","222","333"};//简写注意:
String[]names3 = null; names3 = new String[] {"111","222","333"};//这种 分开写是可以的 String[]names4 = null; names4 = {"111","222","333"};//不可以,报错语法:类型[] = new 类型[长度]; //必须要添加长度,一旦分配长度,该数组的长度不可改变
赋值:可以通过下标给数组赋值取元素的个数:length 可以获取数组中元素的个数 int[]scores = new int[5]; scores[0]=90;//从0开始 scores[1]=40; …… int n = scores.length;//获取数组的个数 比下标大1初始化默认值
int[]num = new int[5]; System.out.println(num[0]); //默认值 0 (byte short int long) float[]f = new float[5]; f[1]=1.23f; //赋值特殊性 System.out.println(f[0]); //默认值 0.0 (float double) char[] c =new char[5]; System.out.println(c[0]); //默认值 空字符:‘\u0000’ boolean[] b = new boolean[5]; System.out.println(b[0]); //默认值 flase