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

一、流程控制-循环

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

练习六

方法一:

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

你可能感兴趣的:(java,javase)