黑马程序员技术交流社区
标题: 循环经验小结 [打印本页]
作者: 螳臂挡坦克 时间: 2020-1-7 19:41
标题: 循环经验小结
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{
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;
public class Test{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
System.out.println("请出入一个小于1000的正整数");
int num = sc.nextInt();
System.out.println("你输入的数字是"+num);
{
int cal=0;
while (num!=1){
cal++;
switch(num%2){
case (0):
num=num/2;
break;
case(1):
num=3*num;
num++;
break;
}
}
System.out.print("你砍了"+cal+"刀");
{
}
}}}
加强题
分析以下需求,并用代码实现: (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;
}
}
}
}
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |