如何检查算术序列

时间:2015-11-14 07:52:29

标签: java

我想写一个程序,在数组中查找三个数字,给出一个长度为3的算术序列 - 三个数字a,b和c形成一个长度为3的算术序列,如果:b-a = c-b。

问题是他的代码没有打印"是"即使它应该,它也永远不会进入命令。我想在为b-a = c-b编写数学命令时遇到问题。

SELECT id 
FROM mytable 
GROUP BY Id 
HAVING COUNT(*) = (SELECT COUNT(DISTINCT date) FROM mytable)

2 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

变更:

  1. 首先对数组进行排序
  2. 当你离开最内圈时,你     还必须打破所有外部循环(检查下面的代码)
  3. Arrays.sort(a);
    
    outerLoop:
    for (int i = 0; i < a.length - 2; i++) {
    
        for(int j = i+1; j < a.length - 1; j++){
    
            for(int k = j+1; k < a.length; k++){
    
                if(a[j] - a[i] == a[k] - a[j]){
                    System.out.println("yes");
                    break outerLoop;
                }
    
            }
    
        }
    
    }
    

    更新:
    由于此代码,您缺少数组的第一个元素:

    int [] a = new int [args.length - 1]
    for (int i = 0; i<a.length; i++) {
           a[i] = Integer.parseInt(args[i+1]);
         }
    

    将其更改为:

    int [] a = new int [args.length]
    for (int i = 0; i<a.length; i++) {
           a[i] = Integer.parseInt(args[i]);
         }
    

答案 1 :(得分:1)

这有效:

public static void main(String[] args) {

        int [] a =new int [new Integer(args.length)];
        for (int i = 0; i<a.length; i++) {
               a[i] = Integer.parseInt(args[i]);
        }

        for(int j=0;j<a.length;j++){

        if(j+2<a.length){           
        if(a[j+1]-a[j] ==a[j+2] - a[j+1])
        System.out.println("Yes........." +a[j] +""+ a[j+1] +"" +a[j+2]);

        }
    }
}

用2 3 4 6(2 3 4是序列)和1 3 5 7(1 3 5和3 5 7是序列)进行测试