小编典典

编写程序,将搜索数组以查找第一个奇数

java

我无法完成这个问题。编写一个程序,该程序将搜索数组以查找第一个奇数。如果找到了奇数,则找到奇数之后的第一个偶数。返回第一个奇数和第一个偶数之间的距离。如果找不到奇数或奇数之后没有偶数,则返回-1。我试过这个问题,但我无法解决这是我的代码:

public class RayOddtoEven
{
  public static int go(int[] ray)
  {
    int result = 0;
    boolean oddExists = false;
    int oddIndex = 0;
    for (int i = 0; i < array.length; i++)
    {
      if (array[i] % 2 != 0)
      {
        oddExists = true;
        oddIndex = array[i];
        break;
      } 
    }
  }
}

该代码的亚军

class Main 
{
  public static void main(String[] args) 
  {
    RayOddtoEven rt = new RayOddtoEven();

    System.out.println( rt.go( new int[]{7,1,5,3,11,5,6,7,8,9,10,12345,11} ) );
    System.out.println( rt.go( new int[]{11,9,8,7,6,5,4,3,2,1,-99,7} ) );
    System.out.println( rt.go( new int[]{10,20,30,40,5,41,31,20,11,7} ) );
    System.out.println( rt.go( new int[]{32767,70,4,5,6,7} ) );
    System.out.println( rt.go( new int[]{2,7,11,21,5,7} ) );
    System.out.println( rt.go( new int[]{7,255,11,255,100,3,2} ) );
    System.out.println( rt.go( new int[]{9,11,11,11,7,1000,3} ) );
    System.out.println( rt.go( new int[]{7,7,7,11,2,7,7,11,11,2} ) );
    System.out.println( rt.go( new int[]{2,4,6,8,8} ) );

  }
}

请帮助我完成此代码,并提供此代码给该运行程序提供的输出。我需要这个答案。我需要的正确输出。

6
2
3
1
-1
4
5
4
-1

阅读 266

收藏
2020-11-30

共1个答案

小编典典

我将嵌套一个循环,首先进行迭代以找到第一个奇数;然后从那里进行迭代以获得均匀的值。从第一个奇数开始迭代后,可以终止外循环。就像是

public static int go(int[] ray) {
    for (int i = 0; i < ray.length; i++) {
        if (ray[i] % 2 != 0) {
            for (int j = i + 1; j < ray.length; j++) {
                if (ray[j] % 2 == 0) {
                    return j - i;
                }
            }
            break;
        }
    }
    return -1;
}

输出(根据要求)

6
2
3
1
-1
4
5
4
-1
2020-11-30