java学习04

一:循环结构:

while

  • while格式
            /* while格式
			 * while(添加表达式){
			 *     条件表达式成立时执行的代码块
			 * }
			 * 格式与if完全相同
			 * */
  • while执行过程
int a=1;
if(a<5) {
    System.out.println("if   a="+a);
}
//if :条件表达式成立  执行代码块一次
a=1;
while(a<5) {
    System.out.println("while   a="+a);
    Thread.sleep(200);
    a++;//完全等价于 a=a+1;
}
//while :1  判断条件表达式是是否成立 不成立结束while
//      : 2 条件表达式成立  执行代码块一次
//      : 3 继续 1 2  直到条件表达式不成立
  • while组成
            /*while的组成:
			 *    1 a<5:条件表达式   
			 *    2 System.out.println("while   a="+a);  循环执行的代码::循环体
			 *    3 a++;迭代语句
			 *选择执行或者不执行  用if-elase
			 *需要一个数从值1有规律的跑到值2时  用while    
			 * */
  • while练习

求1到100的和

//求1+2+3+...100;
//System.out.println(1+2+3+4+5...+100);
//0+1=1 1+2=3 3+3=6 6+4=10 10+5=15
int sum=0;//记录结果  赋初始值为0
//循环的把一个数n加入sum中  n的值需要从1开始 每次+1
int n=1;//定义一个变量记录每次加入sum的数  从1开始
while(n<=100) {//循环的条件
    sum+=n;//循环执行的代码
    n++;//每次n的值需要+1
}
//循环完后  打印最终的结果
System.out.println("1+2+3+...100="+sum);
System.out.println("n="+n);//101
//迭代语句:按指定的算符重复的更改某个变量的值

求1到100内所有可以被3整除的数的平均值

//2 求1到100内所有可以被3整除的数的平均值
int sum=0,geShu=0;//定义变量记录和  个数
//定义变量n 从1开始跑
int n=1;
//使用循环让其从1跑到100
while(n<=100) {
    //判断是否可以被3整除
    sum+=(n%3==0?n:0);
    geShu+=(n%3==0?1:0);
    n++;
}
//获取平均值:
System.out.println("1到100内所有可以被3整除的数的平均值="+(double)sum/geShu);

获取所有的水仙花数

//1 获取所有的水仙花数
// 三位数  各个位数的值的三次方之和等于此数
//使用循环 把所有的三位数跑完
int n=100;
while(n<1000) {
    //判断当前n是不是水仙花数
    //获取当前n各个位数的值
    int a=n/1%10,b=n/10%10,c=n/100%10;
    //获取更改位数值的三次方之和
    int sum=a*a*a+b*b*b+c*c*c;
    //判断sum是不是等于当前n
    if(sum==n) {
        System.out.println(n+"是水仙花数!");
    }
    n++;//迭代语句
}

获取1到10000内的所有完数

//判断一个数是不是完数
//n的所有因子之和等于n  那n就是完数
//因子:如果n%m==0&&m!=n m就是n的因子 ,约数
//如:12 1+2+3+4+6=16  不是完数
//    6  1+2+3=6    是完数
//n的因子取值范围:[1,n/2]   
//使用循环让变量m从1跑到n/2 循环判断m是不是n的因子  是 就加入sum中
int n=1;//定义变量记录要判断的数据
while(n<=10000) {
    int sum=0;//定义变量记录和
    //定义变量m 让其从1跑到n/2
    int m=1;
    while(m<=n/2) {
        if(n%m==0) {
            sum+=m;
        }
        m++;
    }
    //所有的m跑完  通过判断sum是不是n 来判断n是不是完数
    if(n==sum) {
        System.out.println(n+"是完数!");
    }
    n++;
}

判断一个数是不是质数:

//判断一个数是不是质数:
//质数:只能被1和其本身整除的数  1不是质数
//n :可以整除n的数的取值范围是:[2,n/2]
//使用循环让变量m从2开始 一直跑到n/2 循环判断m是否可以整除n  
//只要有一次整除 n就不是质数
int n=1;//定义变量记录要判断的数据
//使用循环让变量m从2跑到n/2
int  m=2;
boolean b=true;//定义一个变量 作为标签
while(m<=n/2) {
    //循环判断m是否可以整除n
    if(n%m==0) {
        //被除尽 就更改标签的值
        b=false;
    }
    m++;
}
//循环完后  通过判断标签的值是不是更改 来判断m是否除尽过n 进而判断n是不是质数
if(n!=1&&b==true) {
    System.out.println(n+"是质数!");
}else {
    System.out.println(n+"不是质数!");
}

do-while

       /*do-while
        *do{
        *   循环体(循环执行的代码块)
        *}while(条件表达式); 
        *
        * while(条件表达式){
        *     循环体(循环执行的代码块)
        * }
        * 
        * 区别: dowhile 是先执行 后判断   ;至少执行一次
        *       while   先判断后执行      ;可能一次也不执行
        * */
int a;
a=10;
while(a<5) {
    System.out.println("while   a="+a);
    a++;
}

a=10;
do {
    System.out.println("do ----while   a="+a);
    a++;
}while(a<5);

for

	   //for和while完全等价:格式不同
		/*for(初始化语句;条件表达式;迭代语句){
		 *     循环体(条件表达式成立时执行的代码块)
		 *}
		 *初始化语句:用于定义变量、给变量赋初始值的语句
		 *
		 *while(条件表达式){
		 *   循环体(条件表达式成立时执行的代码块)
		 *   迭代语句
		 *}
		 * */

for和while的比较

//求1到100内的和
{
    int sum=0;
    int n=1;
    while(n<=100) {
        sum=sum+n;
        n++;
    }
    System.out.println("1到100内的和====="+sum);
}
{
    int sum=0;
    for(int n=1;n<=100;n++) {
        sum+=n;
    }
    System.out.println("1到100内的和="+sum);
}
//上面的while和for  过程、代码、结果 完全相同  只是代码的位置不同

特殊情况

//		for特殊情况: 初始化语句  条件表达式  迭代语句 都可以省略
//		            条件表达式省略:默认是true
		for (;;) {
			System.out.println("----循环体---");
		}
  • for相关变量的作用域
//一个变量的作用域取决于定义此变量的括号
//for循环中相关变量的作用域
{
    int a=1;//变量a:在main方法的大括号内定义的  作用域为整个main方法
    for (int b = 1; b<5; ) {//变量b:在for循环的初始化语句中定义的 作用域为整个for循环
        int c=1;//变量c:在for循环的循环体中定义的  作用域为本次for循环
        System.out.println("a="+a+",b="+b+",c="+c);
        a++;b++;c++;
    }
    System.out.println("a="+a);
}

求1到100内所有的质数

//获取1到100内所有的质数
{
    //定义一个变量让其从1跑到100
    for (int n = 1; n <=100; n++) {
        //判断当前n是不是质数
        boolean b=true;//定义一个变量 作为标签
        //使用循环让一个变量m从2跑到n/2
        for (int m =2; m <=n/2; m++) {
            //循环判断m是否除尽n
            if(n%m==0) {
                b=false;//如果n被m除尽 就更改标签的值
            }
        }
        //循环完后 通过判断标签的值是否更改 来判断n是否被m除尽过  进而判断n是不是质数
        if(n!=1 && b==true) {
            System.out.println("n==="+n+",是质数!!");
        }
    }
}

99乘法表

System.out.println("123298766"+'\t');//\t制表符  给对应数据显示8n个字符的位置
System.out.println("123\n123");//\n换行符号

for (int i =1; i <=5; i++) {//外层for循环变量i的取值范围决定行数
    for (int j = 1; j <= i; j++) {//内层for循环变量j的取值范围决定本行的列数
        System.out.print(i+"::"+j+"\t");
    }
    System.out.println();
}

二:break-continue

public class Demo06BreakContinue {
	public static void main(String[] args) {
		/*跳转:
		 * break+continue
		 * break使用场景1:switch  结束switch结构
		 *      使用场景2:用在循环中  结束本层循环
		 * continue使用场景1:用在循环中  结束本次for循环 继续++ 进行下次循环
		 * 
		 * */
		for (int a =1; a < 10; a++) {
			System.out.println("a="+a);
			if(a==4) {break;}
		}
		System.out.println("----");
		for (int a = 1; a <5; a++) {
			for (int b = 1; b < 5; b++) {
				System.out.println("a="+a+":::b="+b);
				if(b==3) {
					break;//结束本次for循环
				}
			}
		}
		System.out.println("----如果结束两层for循环 方式1");
		
		for (int i =1; i < 10; i++) {
			boolean b=true;
			for (int j =1; j < 10; j++) {
				if(i==3&&j==3) {
					b=false;
					break;
				}
				System.out.println("i="+i+"---j="+j);
			}
			if(b==false) {
				break;
			}
		}
		
        System.out.println("----如果结束两层for循环 方式2");	
		a:for (int i =1; i < 10; i++) {
			boolean b=true;
			for (int j =1; j < 10; j++) {
				if(i==3&&j==3) {
					b=false;
					break a;
				}
				System.out.println("i="+i+"-------j="+j);
			}
		}
        
        System.out.println("---------测试continue----");
        for (int i = 1; i <10; i++) {
			  if(i==3) {
				  continue;//结束本次for循环 继续++ 进行下次循环
			  }
			  System.out.println("continue    i="+i);
		}
        
        System.out.println("---获取1到100内所有不能被3或者7整除数的和");
        int sum=0;
        for (int n =1; n <=100; n++) {
			if(n%3==0||n%7==0) {
				continue;
			}
			sum+=n;
		}
        
        System.out.println("----判断一个数是不是质数");
        int n=1;
        int m=2;
        for (; m<n; m++) {
			if(n%m==0) {
				break;
			}
		}
        //如果结束循环是通过不满足m<n 此时m=n 说明m从2跑到n-1 都没有除尽过n 说明n是质数
        //如果结束循环是通过break  此时m<n  此时n被m除尽 n不是质数
        if(n==m) {
        	System.out.println(n+"是质数!");
        }else {
        	System.out.println(n+"不是质数!");
        }
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值