java判断三个整数是否相邻

img

public class TestMain {
    public static void main(String[] args) {
        // 判断三个整数是否相邻
        List<Integer> list = new ArrayList<>();
        System.out.println("请输入三个数");
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            list.add(scanner.nextInt());
        }
        System.out.println("三个数为: " + list.toString());
        System.out.println("三个整数是否相邻: true相邻,false:不相邻: ");
        System.out.println(judgeAdjacent(list));
    }

    public static String judgeAdjacent(List<Integer> list) {
        if (list.size() < 3) {
            return "FALSE";
        }
        int a = list.get(0);
        int b = list.get(1);
        int c = list.get(2);

        if (((Math.abs(a - b) <= 2) && (Math.abs(b - c) <= 2) && (Math.abs(c - a) <= 2) && ((a - b) * (b - c) * (c - a) != 0))) {
            return "TRUE";
        } else {
            return "FALSE";
        }
    }
}

运行结果:

img

img

img

img


public class Test{
private static boolean judege(int a[]) {
int min=Integer.MAX_VALUE;

int max=Integer.MIN_VALUE;

for (int i = 0; i < a.length; i++) {
if (a[i]!=0) {
if (min>a[i]) {
min=a[i];

}

if (maxa.length-1) {
return false;

}else {
return true;

}

}

public static void main(String[] args) {
int a[]={8,5,0,10,6,7,0,0};

if (judege(a)) {
System.out.println("该数组是相邻的!");

}else {
System.out.println("该数组不是相邻的!");

}

}

}

img


这个为什么执行不出来?😭

三个数相加除以3是否被三个数包含

简单说是连续相邻的数必然满足a+c=2b,因为满足这个式子的两个数和b等距,所以这个距离为1的时候,三个数就相邻

注意,虽然a+c=2b等价于(a+c)/2=b,
但是我们一般不用除法,因为可能会发生误差,除数为0经常需要特判
(1+4)/2向下取整2,但是1到2和4到2的距离是不相等的,不用浮点型计算结果则不正确
而显然(1+4)不等于2*2,所以比较过程中,能用乘法时尽量不用除法

private boolean isTogether(int a, int b, int c){
        //保持a<=b<=c,不满足则交换
        if(b<a)
            return isTogether(b,a,c);
        if(c<b)
            return isTogether(a,c,b);
        return b*2==a+c && a+1==b;
    }

希望能帮助到你。

import java.util.Scanner;

/**
 *  @author: abzz
 *  @Date: 2021-10-29 13:53
 *  @Description: 判断三个整数是否相邻
 */
public class IntIsAdjoin {

    public static void main(String[] args) {
        int[] arr = new int[3];
        bubbleSort(arr);
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入第1个数:");
        int num1 = scanner.nextInt();
        System.out.print("请输入第2个数:");
        int num2 = scanner.nextInt();
        System.out.print("请输入第3个数:");
        int num3 = scanner.nextInt();
        // 首先由小到大进行排序(由大到小也行)
        arr[0] = num1;
        arr[1] = num2;
        arr[2] = num3;
        bubbleSort(arr);
        // 然后判断相邻两个值的差值的绝对值是不是1
        judjeAdjoin(arr);
    }


    // 冒泡排序
    public static void bubbleSort(int[] srcArr){
        int length = srcArr.length;
        for (int i = (length - 1); i > -1; i--) {
            for (int j = (length - 1); j >= (length - i); j--) {
                if(srcArr[j] < srcArr[j-1]){
                    int temp = srcArr[j];
                    srcArr[j] = srcArr[j-1];
                    srcArr[j-1] = temp;
                }
            }
        }
    }

    // 判断结果
    public static void judjeAdjoin(int[] srcArr){
        for (int i = 0; i < srcArr.length; i++) {
            if((i+1) == srcArr.length){
                break;
            }
            int diff = srcArr[i + 1] - srcArr[i];
            if(diff != 1){
                System.out.println("FALSE");
                return;
            }
        }
        System.out.println("TRUE");
    }
}