A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

螳臂挡坦克

初级黑马

  • 黑马币:26

  • 帖子:8

  • 精华:0

© 螳臂挡坦克 初级黑马   /  2020-1-7 19:41  /  1017 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java循环结构
While 循环
[Java] 纯文本查看 复制代码
while (布尔表达式){
//循环内容
}

只要布尔表达式为ture, 循环就会一直执行下去.
[Java] 纯文本查看 复制代码
public class Test{
public static void main(String args[]){
	int x=10;
	while (x<20){
		System.out.print("value of x:");
		x++;
		System.out.println(x);
	}
}
}

其中 while (x<20)为布尔表达式,后方的三行为循环执行内容,会持续执行.


do While 循环
[AppleScript] 纯文本查看 复制代码
do{
	//代码语句
}while(布尔表达式);


执行语句块,然后判断布尔表达式,如果布尔表达式值为true,则语句块一直执行,直到布尔表达式的值为false.
对于while 语句来说,如果不满足条件则不能进行循环,但是在do while循环下,即使我们不满足条件,也至少执行一次.

[Java] 纯文本查看 复制代码
public class Test{
	public static void main(String[]args){
		int x=10;
		do{
			x++;
			System.out.print(x);
			System.out.print("\n");
		}while(x<20);
	}
}

do 之后的语句块被执行之后, 执行while判断 如果while判断结果为true, 语句块会继续执行. 如果判断语句为false.则结束.
for 循环
[Java] 纯文本查看 复制代码
for (初始化;布尔表达式;更新){
//代码语句
}

初始化: 可以申明一种类型,或者初始化一个或多个循环控制变量,也可以是空语句.
布尔表达式: 检测布尔表达式的值,如果为true,循环体被执行.如果为false,循环终止.(如果不满足条件不会执行和do while 不同和 while相同)
执行一次后,更新循环控制变量,再次检测布尔表达式.
(for 循环在执行前,循环执行次数就会被确定)
[Java] 纯文本查看 复制代码
public class Test{
	public static void main(String []args){
		for (int x=20;
			x<20;
			x++){
				System.out.print("value of x:"+x);
				System.out.print("\n");
			}
	}
}
//注意,第三块表达式后没有";",
Java 增强for 循环
[AppleScript] 纯文本查看 复制代码
for(申明语句:表达式)
{
//代码句子
}


申明语句:表明行的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等.
表达式:表达式是要访问的数组名,或者是范围值为数组值得方法.
[Java] 纯文本查看 复制代码
public class Test{
	public static void main(String args[]){
		int [] numbers={10,20,30,40,50};
		for (int x:numbers){
			System.out.print(x);
			System.out.print(",");
		}
	}
}
break 关键字
break 用在循环语句中或者Switch 语句中,用来跳出整个语句块.
Break 跳出最里层的循环,继续执行该循环下面的语句
[Java] 纯文本查看 复制代码
public class Test{
	public static void main(String args[]){
		int [] numbers={10,20,30,40,50};
		for (int x:numbers){
			System.out.print(x);
			System.out.print(",");
			if(x==30){
				break;
			}
		}
	}
}
break 跳出后执行结果为40,50.
continue关键字
continue适用于任何循环控制结构,作用是让程序立即跳转到下一次循环迭代中.在for 循环中,continue语句使程序立即跳转到下一次循环中,而不执行此次循环的语句块.
在for循环语句中,continue语句让循环直接跳转到更新语句.
在while循环语句中,continue语句让循环直接跳转到布尔表达式.
[Java] 纯文本查看 复制代码
public class Test{
	public static void main(String args[]){
		int [] numbers={10,20,30,40,50};
		for (int x:numbers){
			if(x==30){
				continue;}
			System.out.print(x);
			System.out.print(",");
			
		}
	}
}//注意,在for循环语句中,记得把continue的判断放在执行语句的最前面.
运行结果为10,20,40,50. continue语句中的30被跳过了.
下面有几个课外例子
输出数字,逢三进一,
[Java] 纯文本查看 复制代码
public class Test{
	public static void main(String[]args){
	for (int i=1;
	i<=3;
	i++){
	//for (初始化;布尔表达式;更新){执行语句}
		for(int n=1;
		n<=3;
		n++){
			System.out.println("i="+i+",n="+n);
			}
		}
	}
}

讲解:
第一个for 定义一个i 并且判断他是否小于3,第二个for定义一个n 并且判断他是否小于3.如果成立

实例: for 嵌套2
打印一张99乘法口诀表.并且要求九个一行.
[Java] 纯文本查看 复制代码
public class Test{[/align]	public static void main(String[] args){
	 	for (int i=1; i<=9; i++)
		{
			for(int k=1; k<=i; k++)
			{
				System.out.print(i+"*"+k+"="+i*k+"	");
			}
				System.out.println();
		}
		
		}
}

思路:
双层循环,第一层用于乘,第二层用于计数,当跳出第一层循环之后,执行第二层的循环内容.
实例猴子吃桃  小猴子第一天吃了一半的桃子,然后又吃了一个,
第二天吃了一半然后又吃了一个,到第十天发现只剩下了一个.问开始的时候有多少个桃子



[Java] 纯文本查看 复制代码
public class Test{
	public static void main(String[]args){
		int k=1;
		for (int i=1; i<=9; i++){
		k++;
		k*=2;

	
		}
		System.out.println(k);
	}
}			

实例:卡拉兹猜想
对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……
我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?
(正确的思路应该用for 语句写循环,并且比较简洁,待改进)
[Java] 纯文本查看 复制代码
import java.util.Scanner;[/align][i]public class Test{[/i]


[i]    public static void main(String[]args){[/i]
[i]        Scanner sc=new Scanner(System.in);[/i]
[i]        System.out.println("请出入一个小于1000的正整数");[/i]
[i]        int num = sc.nextInt();[/i]
[i]        System.out.println("你输入的数字是"+num);[/i]
[i]        {[/i]
[i]            int cal=0;[/i]
[i]            while (num!=1){[/i]
[i]                cal++;[/i]
[i]                switch(num%2){[/i]
[i]                    case (0):[/i]
[i]                        num=num/2;[/i]
[i]                        break;[/i]
[i]                    case(1):[/i]
[i]                        num=3*num;[/i]
[i]                        num++;[/i]
[i]                        break;[/i]
[i]                }[/i]

[i]            }[/i]
[i]            System.out.print("你砍了"+cal+"刀");[/i]
[i]            {[/i]
[i]                }[/i]
[i]        }}}

加强题
分析以下需求,并用代码实现:        (1)按照从大到小的顺序输出四位数中的        个位+百位=十位+千位(3553,2332,1166,8228,3773)的数字及其总个数        (2)每行输出5个满足条件的数字, 数字之间用空格分隔        (3)如:9999 9988 9977 9966 9955
[Java] 纯文本查看 复制代码
public class Test03{
    public static void main (String[]args){
        int gw=0;
        int sw=0;
        int bw=0;
        int qw=0;
        int cnt=0;
        for (qw=9;qw>=0;qw--){
            for(bw=9;bw>=0;bw--){
                for(sw=9;sw>=0;sw--){
                    for(gw=9;gw>=0;gw--){
                        if (gw+sw==qw+bw&qw!=0){

                            System.out.print(qw+""+bw+""+sw+""+gw+",");
                            cnt++;
                            if (cnt == 5) {
                                System.out.println();
                                cnt = 0;
                            }

                        }
                    }
                }
            }
        }
    }
}









0 个回复

您需要登录后才可以回帖 登录 | 加入黑马