语法: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
练习六
方法一:
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 类型[长度]; //必须要添加长度,一旦分配长度,该数组的长度不可改变
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