1 for循环
案例:Demo1
1+1/2+1/3+1/4+1/5+1/6+...+1/100 = ?
1/1+1/2+1/3+1/4+1/5+1/6+...+1/100 = ?
分子都是1,分母是1~100
首先定义一个double类型变量sum=0,保存累加之和
第1次:sum = sum + 1/1
第2次:sum = sum + 1/2
第3次:sum = sum + 1/3
第4次:sum = sum + 1/4
第5次:sum = sum + 1/5
...
第100次:sum = sum + 1/100
定义变量double i = 0,i的取值1~100,i作为分母
公式:sum = sum + 1/i
for(double i=1;i<=100;i++){
sum = sum + 1/i;
}
案例:Demo1
1/1+1/2+1/3+1/4+1/5+1/6+...+1/100 = ?
public class Demo1 { public static void main(String[] args) { double sum = 0; for(double i=1;i<=100;i++){ sum = sum + 1/i; } System.out.println(sum); } } public class Demo2 { //1+1/3+1/5+1/7+1/9+...1/99 = ? //1/1+1/3+1/5+1/7+1/9+...1/99 = ? //规律:分子都是1,分母1~99之间的奇数 public static void main(String[] args) { //1 求出分母 double sum = 0; for(double i=1;i<=99;i=i+2){ //2 累加求和:sum = sum+1/i sum = sum + 1/i; } System.out.println("累加之和:"+sum); } } //Demo3: //1+1/2+1/4+1/6+1/8+1/10+...+1/200 = ? public class Demo3 { //1+(1/2+1/4+1/6+1/8+1/10+...+1/200) = ? public static void main(String[] args) { double sum=1; for(double i=2;i<=200;i=i+2){ sum = sum + 1/i; } System.out.println("累加之和:"+sum); } }
2 break和continue
1)break:直接退出循环语句。
2)continue:结束本次循环,继续开始下次循环。
案例:Demo4
public class Demo4 { public static void main(String[] args) { for(int i=1;i<=30;i++){ if(i==10){ break;//直接退出循环 } System.out.println(i); } } } public class Demo5 { public static void main(String[] args) { for(int i=1;i<=30;i++){ if(i==10){ continue;//结束本次循环,继续开始下次循环 } System.out.println(i); } } } public class Demo6 { //使用for循环,求出1~300之间所有的奇数累加之和, //如果累加之和一旦超过5000,直接退出for循环,并 //输出当前的累加之和。 public static void main(String[] args) { int sum = 0; for(int i=1;i<=300;i=i+2){ sum = sum + i; if(sum>5000){ break; } } System.out.println(sum); } } //Demo7: 使用for循环,求出1~100之间所有的奇数 //(2种写法) public class Demo7 { public static void main(String[] args) { //方法1: for(int i=1;i<=100;i++){ if(i%2!=0){ System.out.println(i); } } //在for循环中定义的变量i,只在for循环中有效,在 //for循环外面无效 // System.out.println(i); System.out.println(); //方法2: for(int i=1;i<=100;i=i+2){ System.out.println(i); } } }
3 循环嵌套
1)输出内容,不换行
System.out.print("要显示的内容");
案例:Demo8
public class Demo8 { public static void main(String[] args) { System.out.print("李斯,"); System.out.print("霍光,"); System.out.print("房玄龄,杜如晦,"); System.out.print("李善长,张居正。"); System.out.println();//换行 System.out.println("白起"); System.out.println("卫青,霍去病"); System.out.println("李靖,苏定方"); System.out.println("徐达,蓝玉"); } } public class Demo9 { public static void main(String[] args) { //***** System.out.println("*****"); for(int i=1;i<=5;i++){ System.out.print("*"); } } } public class Demo10 { //*** //*** //*** public static void main(String[] args) { for(int i=1;i<=6;i++){//行数 for(int k=1;k<=10;k++){//*列数 System.out.print("*"); } System.out.println(); } } } //Demo11:从控制台输入两个整数,分别作为打印长方形*的 //行数row和列数col //比如:row:2 col:3 //*** //*** //外层循环:i=1 i<=3(true) //内层循环第1次:k=1 k<=3(true) * k++(k:2) // 第2次: k<=3(true) * k++(k:3) // 第3次: k<=3(true) * k++(k:4) // 第4次: k<=3(false) 退出内层循环 //换行 // i++(i:2) //外层循环第2次: i<=3(true) //内层循环: *** //换行 // i++(i:3) //外层循环第3次: i<=3(true) //内层循环: *** //换行 // i++(i:4) //外层循环第4次: i<=3(false) 退出整个循环 import java.util.Scanner; public class Demo11 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入行数:"); int row = sc.nextInt(); System.out.println("请输入列数:"); int col = sc.nextInt(); for(int i=1;i<=row;i++){//行数 for(int k=1;k<=col;k++){//列数 System.out.print("*"); } System.out.println(); } } } public class Demo12 { /* * ** *** **** ***** */ public static void main(String[] args) { for(int i=1;i<=10;i++){//行数 for(int k=1;k<=i;k++){ System.out.print("*"); } System.out.println(); } } } //Demo13:从控制台输入一个整数,作为打印直角三角形 //*的行数row,打印直角三角形* //row:3 //* //** //*** //每行*的个数,跟当前的行数一致(i)。 //内层循环每次打印i个*,内层循环执行i次 //控制内层循环执行次数的k的取值:1~i import java.util.Scanner; public class Demo13 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入行数:"); int row = sc.nextInt(); for(int i=1;i<=row;i++){ for(int k=1;k<=i;k++){ System.out.print("*"); } System.out.println(); } } } public class Demo14 { //1*1=1 //1*2=2 2*2=4 //1*3=3 2*3=6 3*3=9 //1*4=4 2*4=8 3*4=12 4*4=16 //... //1*9=9 2*9=18 ... 9*9=81 public static void main(String[] args) { for(int i=1;i<=9;i++){ for(int k=1;k<=i;k++){ System.out.print(k+"*"+i+"=" +i*k+" "); } System.out.println(); } } }
2)循环嵌套:在一个循环语句的内部,又包含了一个循环语句。外层循环执行一次,内层循环执行所有。
for(int i=1;i<=3;i++){
for(int k=1;k<=3;k++){
System.out.print("*");
}
System.out.println();
}
4 数组
把相同类型的数据聚合在一起,使用数组来保存相同类型的多个数据。
1)创建数组格式:
数据类型[] 数组名 = new 数据类型[数据个数];
或者
数据类型 数组名[] = new 数据类型[数据个数];
eg:int[] ary = new int[5];
2)元素:数组中使用元素来保存数据,元素就相当于变量
3)下标:用来标识数组中的每一个元素,下标的取值从0开始,最后一个元素的下标值(元素总个数-1)
数组名[下标值] ---> 元素
eg:ary[0] = 100; //把100赋值给ary中第1个元素
ary[1] = 200;
ary[2] = 300;
ary[3] = 400;
ary[4] = 500;
案例:Demo15
public class Demo15 { public static void main(String[] args) { int[] ary = new int[6]; ary[0] = 100; //分别把200,300,400,500,600依次的给其他元素赋值 ary[1] = 200; ary[2] = 300; ary[3] = 400; ary[4] = 500; ary[5] = 600; System.out.println(ary[0]); System.out.println(ary[1]); System.out.println(ary[2]); System.out.println(ary[3]); System.out.println(ary[4]); System.out.println(ary[5]); // ary[6] = 1000; //报错了,ary数组中只能保存6个元素,元素下标的取值 //0~5,ary[6]中下标的取值超过范围。 } } public class Demo16 { public static void main(String[] args) { double ary[] = new double[5]; ary[0] = 1.6; ary[1] = 2.3; ary[2] = 9.66; ary[3] = 10.55; ary[4] = 100.1; //输出每一个元素的值 System.out.println(ary[0]); System.out.println(ary[1]); System.out.println(ary[2]); System.out.println(ary[3]); System.out.println(ary[4]); } } public class Demo17 { public static void main(String[] args) { String[] ary = new String[6]; ary[0] = "徐志摩"; ary[1] = "梁思成"; ary[2] = "林徽因"; ary[3] = "林语堂"; ary[4] = "钱钟书"; ary[5] = "冰心"; System.out.println(ary[0]); System.out.println(ary[1]); System.out.println(ary[2]); System.out.println(ary[3]); System.out.println(ary[4]); System.out.println(ary[5]); } }
4)元素的默认值:系统默认给元素赋的值
案例:Demo18
public class Demo18 { public static void main(String[] args) { //整型数组元素的默认值:0 int[] ary = new int[100]; System.out.println(ary[1]);//0 long[] ary2 = new long[100]; System.out.println(ary2[99]);//0 //浮点类型数组元素的默认值:0.0 double[] ary3 = new double[500]; System.out.println(ary3[10]);//0.0 //布尔类型数组元素的默认值:false boolean[] ary4 = new boolean[100]; System.out.println(ary4[0]);//false //引用类型数组元素的默认值:null String[] ary5 = new String[20]; System.out.println(ary5[1]); //null:用来表示引用类型变量没有值,为空。 } }
整数类型数组元素的默认值是0
浮点类型数组元素的默认值是0.0
布尔类型数组元素的默认值是false
引用类型数组元素的默认值是null
null:当前引用类型的变量(元素)没有值,为空。
5)使用for循环来操作数组中的元素
分析:数组中通过下标来区分开每一个元素,下标的取值从0~元素总个数-1。通过控制循环次数变量i的取值,来指向数组中的每一个元素,i的取值0~元素总个数-1,作为元素的下标值。
for(int i=0;i<=元素总个数-1;i++){
数组名[i] ---> 元素
}
案例:Demo19
public class Demo19 { //使用for循环来操作数组中的元素 //控制循环次数变量i的取值,作为数组元素的下标值 //for(int i=0;i<=元素总个数-1;i++){ // 数组名[i] -----> 元素 //} public static void main(String[] args) { //创建一个int类型数组ary,包含100个元素,分别把 //0~99之间的每一个整数赋值给ary数组中的每一个元素 //最后输出每一个元素的值 int[] ary = new int[100]; for(int i=0;i<=99;i++){ ary[i] = i; System.out.println(ary[i]); } /* for(int i=0;i<=99;i++){ System.out.println(ary[i]); } */ } } public class Demo20 { //Demo20:创建一个int类型数组ary,包含了200个元素, //把0~199之间每一个整数给ary数组元素依次赋值,输出 //每一个元素的值。 public static void main(String[] args) { int[] ary = new int[200]; for(int i=0;i<=ary.length-1;i++){ ary[i] = i; System.out.println(ary[i]); } } } public class Demo21 { //创建一个int类型数组ary,包含100个元素,把1~100 //之间的每一个整数给ary数组中元素依次赋值,最后输出 //每一个元素的值 //i 0~99 //i+1 1~100 public static void main(String[] args) { int[] ary = new int[100]; for(int i=0;i<=99;i++){ ary[i] = i+1; System.out.println(ary[i]); } } } public class Demo22 { //创建一个int类型数组ary,包含200个元素,把1~200之间 //每一个整数给ary数组中元素依次赋值 //1 输出每一个元素的值 //2 求出所有元素的累加之和 // sum = sum + i // sum = sum + ary[i] public static void main(String[] args) { int[] ary = new int[200]; for(int i=0;i<=199;i++){ ary[i] = i+1; System.out.println(ary[i]); } //累加求和: sum = sum + ary[i] int sum = 0; for(int i=0;i<=199;i++){ sum = sum + ary[i]; } System.out.println("元素累加之和:"+sum); } }
6)数组名.length:返回是数组中元素的总个数
案例:Demo23
public class Demo23 { public static void main(String[] args) { int[] ary = new int[200]; System.out.println(ary.length);//200 } }
for(int i=0;i<=数组名.length-1;i++){
数组名[i] ---> 元素
}