我想写一个程序,在数组中查找三个数字,给出一个长度为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)
答案 0 :(得分:1)
我认为这就是你想要的:
变更:
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是序列)进行测试