循环结构
一、while循环
while(布尔表达式){
//循环内容
}
用while循环计算从1~100的和
public static void main(String[] args) {
int i = 1;
int sum = 0;
while(i<=100){
sum = i+sum;
i++;
}
System.out.println(sum);
}
-
只要布尔表达式的值为true,循环就会一直进行
-
大多数情况会让循环停止,用一个让表达式失效的方法来结束循环
-
少部分情况需要一直循环,如服务器的请求响应监听
-
循环条件一直为true就会造成死循环,在编程中要尽量避免死循环
二、do…while循环
do{
}while();
计算1+2+3+......+100:
public static void main(String[] args) {
int i = 0;
int sum = 0;
do{
sum = sum+i;
i++;
}while(i<=100);
System.out.println(sum);
}
while 和do-while的区别:
- while先判断后执行,do-while先执行后判断
- 主要差别:do-while总是保证循环体至少会被执行一次
三、For循环
for(初始化;布尔表达式;更新){
//代码
}
假设要输入从1-100的数字可以在IDEA中直接输入100.for回车就可以直接得到
for (int i = 0; i < 100; i++) {
1.最先执行初始化步骤,可以声明一种类型,可以初始化一个或多个变量,也可以是空语句
2.检测布尔值,如果为true,循环体执行,如果为false,循环体结束,也可以是空语句
3.执行一次循环后更新循环控制变量
4.再次检测布尔表达式
for(; ;){}//死循环
-
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
-
for循环执行次数是在执行前就确定的
eg1.用for循环计算从1~100的奇数和及偶数和
int oddsum = 0;//奇数和
int evensum = 0;//偶数和
for (int i = 0; i <= 100; i++) {
if(i%2!=0){
oddsum+=i;
}else{
evensum+=i;
}
}
System.out.println("奇数和为:"+oddsum);
System.out.println("偶数和为:"+evensum);
eg2.1用for循环输出1~1000之间能被5整除的数并且每行输出三个
public class ForDemo02 {
//用for循环输出1~1000之间能被5整除的数并且每行输出三个
public static void main(String[] args) {
for (int i = 0; i <= 1000; i++) {
if(i%5==0){//判断i能否被5整除
System.out.println(i+"\t");//如果能输出,并空几格
}
if(i%(5*3)==0){
System.out.println();
//System.out.print("\n");
//System.out.println()输出完会换行
//System.out.print(“”);输出完不会换行
}
}
}
}
eg2.2用while循环输出1~1000之间能被5整除的数并且每行输出三个
public class WhileDemo01 {
public static void main(String[] args) {
int a = 1;
int count = 0;//用来计算个数
while(a<=1000){
if(a%5==0){//判断a能不能被5整除
System.out.println(a+"\t");//如果能,输出,并空格隔开
count++;
}
a++;
if(count%3==0){//每行输出3个就换行
System.out.println();
}
}
}
}
eg3.打印九九乘法表
1.先输出一列
public class ForDemo04 {
public static void main(String[] args) {
for (int i = 0; i <= 9; i++) {
System.out.print(1+"*"+i+"="+(1*i)+"\t");
}
}
}
2.再用一个for循环把第一个for循环包起来形成嵌套for循环
for (int j = 0; j < 9; j++) {
for (int i = 0; i <= 9; i++) {
System.out.print(1+"*"+i+"="+(1*i)+"\t");
}
}
3.去掉重复项。i<=j
for (int j = 0; j < 9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
}
4.调整样式
for (int j = 0; j <= 9; j++) {
for (int i = 0; i <= j; i++) {
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
}
eg.4、打印三角形:可分为三部分
第一部分
public class TeastDemo01 {
public static void main(String[] args) {
//打印三角形
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print("*");
}
System.out.println();
}
}
}
结果
第二部分
public class TeastDemo01 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print(" ");
}
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
结果
第三部分
public class TeastDemo01 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print(" ");
}
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
for (int j = 1; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
结果如图
可以通过Debug来查看代码是怎么一步步运行的:
1.在要执行代码的第一行左侧点击一下空白的地方就会出现一个红色小圆圈
2.点击IDEA右上角像小蟑螂一样的图标
3.查看左下角,返回控制台后点击蓝色的步入键就可以一步步看代码运行以及输出结果
增强for循环(也叫For-Each循环)
主要用于数组或集合的增强型for循环
for(声明语句:表达式){
//代码
}
public class ForDemo05 {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
//遍历数组的元素
for (int x : numbers){//把数组中每一项的值赋给x
System.out.println(x);
}
}
}
和
for(int i = 0;i<=5;i++){
System.out.println(numbers[i]);//输出数组中第i位
}结果一样
声明语句:声明新的局部变量,该变量类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等
表达式:表达式是要访问的数组名或是返回值为数组的方法