zoukankan      html  css  js  c++  java
  • Java 判断 循环

    一、优先级

    1.1 先判断5>3,true 6>4 true;然后true==true ,最后是true;

    1.2 6>5,true;而true和4无法比较。所以该判断出错;

    1.3  和1.2比较,可以知道该比较可以正常进行

    1.4 错误,

    1.5 >号优先级要高于=。所以先判断b>false ,这个无法判断。所以错误

    1.6 先判断a和b true 或者false,但是true和false 没法比较大小,所以也错误。

    2、浮点数判断大小

    package hello;
    
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		double a=1.0;
    		double b=0.2+0.2+0.2+0.2+0.2;
    		double c=0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1;
    		System.out.println("a="+a);
    		System.out.println("b="+b);
    		System.out.println("c="+c);
    		System.out.println(a==c);//浮点数直接判断相等很容易出错
    		System.out.println(Math.abs(a-c)<1e-6);//差值和很小的一个数比较
    	}
    }
    

    明显看到c逼近1,但是不是1,所以直接判断a==c,false ;

    浮点数比较是要用差值比较。

    3、

    4、

    switch 遇到break才退出,否则会越过case 继续做下一个case的任务。

    package hello;
    
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		int a=1;
    		switch(a)
    		{
    		case 1:
    		case 2:
    			System.out.println("您好");
    		case 3:
    			System.out.println("晚上好");
    			break;
    		default:
    			System.out.println("再见");
    			break;
    		}
    	}
    }
    

    package hello;
    
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		int a=4;
    		switch(a)
    		{
    		default:
    			System.out.println("再见");
    		case 1:
    		case 2:
    			System.out.println("您好");
    		case 3:
    			System.out.println("晚上好");
    			break;
    		}
    	}
    }
    

     二、循环

    2.1

    package hello;
    
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		int num=in.nextInt();
    		int n=0;
    		while(num!=0)
    		{
    			n++;
    			num=num/10;
    		}
    		System.out.println(n);
    	}
    }
    

    输入为0时是有问题的。

    package hello;
    
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		int num;
    		int n=0;
    		num=in.nextInt();
    		do
    		{
    		    n++;
    			num=num/10;
    		}
    		while(num!=0);//分号别忘了
    		System.out.println(n);
    	}
    }
    

    2.2 

    package hello;
    import java.util.Scanner;
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		int num=(int)(Math.random()*100);//生成随机数
    		int i=1;//次数
    		int n;
    		n=in.nextInt();
    		while(n!=num)
    		{
    			if(n>num)
    			{
    				System.out.println("大了");
    			}
    			else
    			{
    				System.out.println("小了");
    			}
    			n=in.nextInt();
    			i++;
    		}
    		System.out.println("随机数为:"+num+",猜了"+i+"次。");
    	}
    }
    

    三、循环控制

    int 4个字节,4*8=32位。表示的最大数2^31-1,最小数-2^31。

    3.1

    package hello;
    import java.util.Scanner;
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		System.out.println("100以内素数有:");
    		int num=0;
    		for(int i=2;i<=100;i++)
    		{
    			int flag=0;//素数标志
    			for(int j=2;j<=(int)Math.sqrt(i);j++)
    			{
    				if(i%j==0)//不是素数
    				{
    					flag=1;//不是素数
    					break;
    				}
    			}
    			if(flag==0)//素数
    			{
    				num++;
    				System.out.println(i);
    			}
    		}
    		System.out.println("100以内素数个数为:"+num);
    	}
    }
    

     3.2

    枚举方法求多种情况。

    package hello;
    import java.util.Scanner;
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in = new Scanner(System.in);
    		int amount = in.nextInt();//总钱数
    		for ( int one = 0; one <=amount; ++one )//1块钱从1到33张
    		{
    			for ( int five = 0; five <= amount/5; ++five )//5块钱 从1到6张
    			{
    				for ( int ten = 0; ten <= amount/10; ++ten )//10块钱 从1到3张
    				{
    					for ( int twenty = 0; twenty <= amount/20; ++twenty )//20块钱 1张
    					{
    						if ( one+five*5+ten*10+twenty*20 == amount )
    						{
    							System.out.println(one+"张1元,"+five+"张5元,"+ten+"张10元,"+twenty+"张20元-->"+amount);
    						}
    					}
    				}
    			}
            }
        }
    }
    

    多个循环跳出

     3、

    3.1

    package Hello;
    
    import java.util.Scanner;
    
    public class hello_test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		int n=in.nextInt();
    		double sum=0.0;
    		for(int i=1;i<=n;i++)
    		{
    			sum+=(1.0/i);
    		}
    		System.out.println(sum);//输出原数
    		System.out.printf("%.2f",sum);//输出 保留两位小数;注意输出的函数变了
    
    	}
    
    }
    

    3.2

    (1)利用标志位,正负变换

    package Hello;
    
    import java.util.Scanner;
    
    public class hello_test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);//创建扫描器
    		int n=in.nextInt();
    		double sum=0.0;
    		int flag=1;//标志位
    		for(int i=1;i<=n;i++)
    		{
    			sum+=(flag*(1.0/i));
    			flag=-flag;
    		}
    		System.out.println(sum);//输出原数
    		System.out.printf("%.2f",sum);//输出 保留两位小数;注意输出的函数变了
            in.close();//关闭扫描器
    	}
    
    }

    (2)

    package Hello;
    
    import java.util.Scanner;
    
    public class hello_test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);//创建扫描器
    		int n=in.nextInt();
    		double sum=0.0;
    		for(int i=1;i<=n;i++)
    		{
    			sum+=Math.pow(-1, i+1)*(1.0/i);//注意乘方怎么表示
    		}
    		System.out.println(sum);//输出原数
    		System.out.printf("%.2f",sum);//输出 保留两位小数;注意输出的函数变了
            in.close();//关闭扫描器
    	}
    
    }
    

    4、

    (1)逆向递减求

    package Hello;
    
    import java.util.Scanner;
    
    public class hello_test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);//创建扫描器
    		int n=in.nextInt();
    		int m=in.nextInt(); //输入两个值
    		int i=n;
    		while(n%i!=0 || m%i!=0)
    		{
    			i--;
    		}
    		System.out.println(m+"和"+n+"的最大公约数是:"+i);
            in.close();//关闭扫描器
    	}
    
    }
    

    (2)辗转相除求

    package Hello;
    
    import java.util.Scanner;
    
    public class hello_test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);//创建扫描器
    		int n=in.nextInt();
    		int m=in.nextInt(); //输入两个值
    		int a,b,y;
    		a=n;
    		b=m;
    		y=m;
    		while(a%b!=0) //辗转相除法
    		{
    			y=a%b;//余数
    			a=b;
    			b=y;
    		}
    		System.out.println(m+"和"+n+"的最大公约数是:"+b);
            in.close();//关闭扫描器
    	}
    
    }
    

      

  • 相关阅读:
    【leetcode】图像渲染
    【leetcode】不邻接植花
    052-75
    052-74
    052-73
    052-71
    052-70
    052-69
    052-67
    052-66
  • 原文地址:https://www.cnblogs.com/ruo-li-suo-yi/p/9085600.html
Copyright © 2011-2022 走看看