java逻辑控制与输入输出


前言

一、作业

在这里插入图片描述
选a。a选项\可转,\”可转”。c被转意为/.b为·”\“ hello ”\“.
在这里插入图片描述

二、swith

不能做swith数据类型的参数有哪些:long不行;float,double,boolean不行。不能是一个表达式如(a<4)
注意string类型可以。

三、调试

逐过程(跳过函数),逐语句(进入函数)
在这里插入图片描述
调试:进入调试,逐过程或逐语句进行调试,结束调试。

四、continue与break

break跳出一层循环。continue是这之后的代码都不进行了,跳回循环部分。

 int i=1;
        while(i<=100)
        {
            if(i%30==0)
            {
                System.out.println(i);
                i++;  //注意:如果没有i++,此代码会进入循环
                continue;
            }
            i++;
        }

五、输入输出

输出格式

第三种基本不用

		 System.out.println("输出换行");
        System.out.print("输出不换行");
        System.out.printf("%s","格式化输出");

输入

在输入Scanner时,在单词没写完时会有导入包的提示,按回车即可导入包了。(或者写完单词按alt+enter)。

import java.util.Scanner;

		 Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();//输入整数
        System.out.println(a);
        double b=sc.nextDouble();//输入小数
        System.out.println(b);

输入字符串
nextLine能输入字符串中空格,next遇到空格就停止了。
注意nextLine如果在之后,要在使用前用 sc.nextLine();只有在nextLine必须用这把回车消除才能输入,其他不用。


 		Scanner sc=new Scanner(System.in);
        System.out.println("输入字符串");
        String s=sc.next();
        System.out.println(s);
        sc.nextLine();
    !!!//只有在nextLine必须用这把回车消除才能输入,其他不用。
        System.out.println("输入字符串");
        String ss=sc.nextLine();
        System.out.println(ss);

在这里插入图片描述

实现持续输入打印的效果:

 		Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt())
        {
            int a=sc.nextInt();
            System.out.println(a);
        }

按ctrl+d停止输入。
ctrl+c是终止程序的意思。
在这里插入图片描述

猜数字

	    Scanner sc=new Scanner(System.in);
	    
  		Random dom=new Random();//随机数生成方法
        int num=dom.nextInt(100);//100是边界

        System.out.println("作弊:"+num);
        while(true)
        {
            int a=sc.nextInt();
           if(a>num)
           {
               System.out.println("猜大了");
           }
           else if(a==num)
           {
               System.out.println("猜对了");
               break;
           }
           else
           {
               System.out.println("猜小了");
           }
        }

在这里插入图片描述
若要生成50到100的随机数:
int num=dom.nextInt(50)+50;(原本为0到50,后都加50,即可。)

六、练习题

判断素数

 Scanner sc=new Scanner(System.in);
        int d=sc.nextInt();
        int i=2;
        for(;i<d;i++)
        {
            if(d%i==0)
            {
                System.out.println("不是素数");
                break;
            }

        }
        if(i==d)
        {
            System.out.println("是素数");
        }

若要改善一下:Math.squrt()不用导包,它是求根号的。
由于有倍数关系,利用根号使不用再遍历与其成倍数的,所以次数减少·,效率更高。

 Scanner sc=new Scanner(System.in);
        int d=sc.nextInt();
        int i=2;
        for(;i<=Math.sqrt(d);i++)//16--》4  17---》4
        {
            if(d%i==0)
            {
                System.out.println("不是素数");
                break;
            }

        }
        if(i>Math.sqrt(d))
        {
            System.out.println("是素数");
        }

求最大公约数,辗转相除法。

因为如24%18=6,a=18,b=6;然后c=0即可退出得到。若是18%24=18,a=24,b=18。

        int c=0;
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        c=a%b;
        while(c!=0)
        {
            a=b;
            b=c;
            c=a%b;
        }
        System.out.println(b);

水仙花数

其各位数的位数次方和恰好等于本身

 //水仙花数

        for(int i=1;i<=999999;i++)
        {
            int count=0;
            int tmp=i;
            while(tmp!=0)
            {
                count++;
                tmp=tmp/10;
            }
            tmp=i;
            int sum=0;//必须放里面,因为每一个sum都是从0开始的,放外面就成累加了。
            while(tmp!=0)
            {
                sum+=Math.pow(tmp%10,count);
                tmp=tmp/10;
            }
            if(i==sum)
            {
                System.out.println(i);
            }
        }

方一,位数固定为32个比特位

 int n=-1;
        int count=0;
        //方一
        for(int i=0;i<32;i++)
        {
            if((n&1)!=0)
            {
                count++;
            }
            n=n>>1;
        }
        System.out.println(count);

方二:只有移动到数为0就不移动了。

 		int n=15;
        int count=0;
        while(n!=0)
        {
            if((n&1)!=0)
            {
                count++;
            }
            n=n>>>1;
        }
        System.out.println(count);

方三:每一次n&n-1都少了一个1,最后有几个1就少几个1.

  		int n=-1;
        int count=0;
        while(n!=0)
        {
            n=n&(n-1);
            count++;
        }
        System.out.println(count);

获取1个数的奇数位和偶数位

注意奇数位从0开始,然后移动30即可。
偶数从1开始,移动31即可。

  int n=39;
            //奇数位输出
            int s=0;
            int p=0;
            for(int i=30;i>=0;i-=2)
            {
                System.out.print( ((n>>i) & 1)+" ");!!如果要写成一个式,要将其用()括起来。
            }
        System.out.println();
            //偶数位输出
            for(int i=31;i>=1;i-=2)
            {
                s=n>>i;
                p=s&1;
                System.out.print(p+" ");
            }

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值