常用的简单的数值比较方法

以下是我总结的常用的四种较为常用的方法。

  • 方法一:(可以根据N的设置进行录入多个数值,来进行多个数值求最大值的比较)
import java.util.Scanner;
public class lj01 {
	public static void main(String[] args) {
		System.out.println("--------------------求最大值----------------------");
		//方法一:适合多个数的录入及比较
		int N=3;
		Scanner sc=new Scanner(System.in);
		int[] arr = new int[N];
		int max=0;
		for(int i=0;i<N;i++) {
			System.out.println("请输入一个整数");
			 arr[i]= sc.nextInt();
			if(arr[i]>=max) {
				max=arr[i];
			}	
		}
		System.out.println("最大数为"+max);
	}
}

当然在写这些代码时,也遇到了一些错误:比如

之前的一句代码是这样写的:int arr[i]= sc.nextInt();

然后进行调试,就会显示错误:Type mismatch: cannot convert from int to int[]    类型不匹配:无法从int转换为int[ ]

改正方式:去掉int,即arr[i]= sc.nextInt();

  • 方法二(此种方法最为基础常用):
import java.util.Scanner;
public class lj01 {
	public static void main(String[] args) {
		//方法二
		System.out.println("--------------------求最大值----------------------");
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个数");
		int a=sc.nextInt();
		System.out.println("请在输入一个数");
		int b=sc.nextInt();
		System.out.println("请输入最后一个数");
		int c=sc.nextInt();
		if(a>=b) {
			if(a>=c) {
				System.out.println("最大值为"+a);
			}
			else {
				System.out.println("最大值为"+c);
			}
		}
		else {
			if(b>=c) {
				System.out.println("最大值为"+b);
			}
			else {
				System.out.println("最大值为"+c);
			}
		}
	}
}
  • 方法三:(简易比较法,适合数值较少的比较)
import java.util.Scanner;
public class lj01 {
	public static void main(String[] args) {
		//方法三 三元运算符
		System.out.println("--------------------求最大值----------------------");
		int a=10;
		int b=20;
		int c=-19;//也可以从键盘录入,如上述方法
		int max = 0;
		max=(c>(max=(a>b?a:b))?c:max);
		System.out.println("最大值为"+max);
		
	}
}

方法三升级版(可以根据N的设置进行录入多个数值,来进行多个数值求最大值的比较)

import java.util.Scanner;
public class lj01 {
	public static void main(String[] args) {
		//方法三 三元运算符
		System.out.println("--------------------求最大值----------------------");
		int N=3;
		Scanner sc=new Scanner(System.in);
		int[] arr = new int[N];
		int max=0;
		for(int i=0;i<N;i++) {
			System.out.println("请输入一个整数");
			 arr[i]= sc.nextInt();
			max=(arr[i]>max?arr[i]:max);
		}
		System.out.println("最大数为"+max);
	}
}

方法四:while循环 

        import java.util.Scanner;
        public class lj01 {
	        public static void main(String[] args) {
		    //方法四while
		System.out.println("--------------------求最大值----------------------");
        int N=10;
		Scanner sc=new Scanner(System.in);
		int [] arr=new int[N];
		System.out.println("请输入"+N+"个数");
		for(int i=0;i<N;i++) {
			 arr[i]=sc.nextInt();
		}
		int max=0;
		int i=0;
		while(true){
			if(arr[i]>max) {
				max=arr[i];
			}
			i++;
			if(i==N)
				break;
		}
		System.out.println("最大值为"+max);
    }
}

方法五:仅适用于两个数的比较

public int getMax(int a ,int b){
    b = a-b;//此时b>>31为1则b小于0即a<b,若b>>31为0 则a>b
     //若a<b a=a-(a-b),若a>b a=a-0 
    return a+c*(a-b);
}

解析:

1. c = (a-b)>>31

(1)当a>=b时,(a-b)符号位为0,(a-b)右移31位,高位补0,右移后的结果为0;

(2)当a<b时,(a-b)符号位为1,(a-b)右移31位,高位补1,故右移后的结果不是 我们想当然的1,而是-1。 

2.a+c*(a-b)

(1)当c=0时,说明a>=b,a+c*(a-b)=a,返回a;

(2)当c=-1时,说明a<b,a+c*(a-b)=a-(a-b)=b,返回b。

 以上几种方法可以参考。。。

当然以后应该会学到更为简单的方法。。。

带有思考的学习。。。早日成为大神。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值