java入门---循环语句与数组

it2025-04-18  4

一、流程控制-循环

1.1for循环

语法: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); } }

1.1.1练习题

练习一 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); } } } }

1.2while循环

语法:初始值①

​ 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循环是可以相互替换的,它们都是先判断再执行

1.3 do-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.4 foreach 数组循环(讲完数组再讲)

二、关键字 break,continue

2.1 break:终止、打断

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 程序结束 } }

2.2 continue:继续

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的倍数 } }

三、嵌套循环

3.1概念

循环中又嵌套循别的循环

嵌套循环的特点:外层循环执行一次,内层循环执行至结束。

示例

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();//换行 } } }

3.2练习题

练习一

输出 *** *** *** *** 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个学员成绩信息等记录

解决方案:可以用数组解决

数组就是类型相同的一组数据

4.1 一维数组

4.1.1数组的定义

​ 数组概念:可以存储一组相同类型的数据

4.2.1 静态初始化

语法:类型[] 数组名 = 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"};//不可以,报错

4.2.2 动态初始化

语法:类型[] = 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
最新回复(0)