Java 如何检查算术序列

Java 如何检查算术序列,java,Java,我想写一个程序,在数组中寻找三个数字,给出一个长度为三的算术序列——三个数字a、b和c形成一个长度为3的算术序列,如果:b-a=c-b public static void main (String[] args) { int [] a = new int [args.length - 1];W for (int i = 0; i<a.length; i++) { a[i] = Integer.parseInt(args[i+1]); }

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

public static void main (String[] args)  {
    int [] a = new int [args.length - 1];W
    for (int i = 0; i<a.length; i++) {
       a[i] = Integer.parseInt(args[i+1]);
     }
    for (int i = 0; i < a.length - 2; i++) {
       for (int j = i+1; j < a.length - 1; j++) {
          int b = a[i];
          for (int k = j + 1; k < a.length; k++) {
             int c = a[k];
             if (b - a[i] == c - b) {
               System.out.println("yes");
                break;
             }
           }
         }
       }
     }
   }
问题是,即使在应该打印“是”的时候,代码也不会打印“是”,如果出现这种情况,代码永远不会进入命令。我想我在为b-a=c-b编写数学命令时遇到了问题

public static void main (String[] args)  {
    int [] a = new int [args.length - 1];W
    for (int i = 0; i<a.length; i++) {
       a[i] = Integer.parseInt(args[i+1]);
     }
    for (int i = 0; i < a.length - 2; i++) {
       for (int j = i+1; j < a.length - 1; j++) {
          int b = a[i];
          for (int k = j + 1; k < a.length; k++) {
             int c = a[k];
             if (b - a[i] == c - b) {
               System.out.println("yes");
                break;
             }
           }
         }
       }
     }
   }
publicstaticvoidmain(字符串[]args){
int[]a=新的int[args.length-1];W

对于(int i=0;i我想这就是你想要的:


变化:

  • 首先对数组进行排序
  • 当你从最里面的循环中断开时,你 还必须断开所有外部环路(检查下面的代码)

  • Arrays.sort(a);
    外部环路:
    对于(int i=0;i
    更新:
    由于以下代码,您缺少数组的第一个元素:

    int [] a = new int [args.length - 1]
    for (int i = 0; i<a.length; i++) {
           a[i] = Integer.parseInt(args[i+1]);
         }
    
    int[]a=新的int[args.length-1]
    对于(int i=0;i而言,这是有效的:

    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]);
    
            }
        }
    }
    
    publicstaticvoidmain(字符串[]args){
    int[]a=新int[新整数(参数长度)];
    
    对于(int i=0;i)和什么问题?运行它时会发生什么?你能提供一些示例输入和输出吗?另外,
    args[i+1]
    将给出
    ArrayOutOfBoundsException
    i
    a.length-1
    时。这是一个家庭作业吗?“2 3 4 6”将给出“是”当它为“否”时,除非你只为三个数字编写程序:3它应该为“是”,因为他正在寻找三个构成符号序列的数字。啊,对不起,我以为她在寻找整个数组是一个算术序列谢谢。还有一个小问题。对于输入:2,3,4,6,我按顺序打印循环中的每个字母查看它检查的内容:“for(int i=0;ipublic 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]); } } }