Java Array Project

问题描述 投票:1回答:1

编写一个程序,该程序将搜索数组以查找第一个奇数。如果找到了奇数,则找到奇数之后的第一个偶数。返回第一个奇数和第一个偶数之间的距离。如果找不到奇数或数组中没有偶数,则返回-1。

这是我已经拥有的

public class OddToEven {

    /**
     * @param args the command line arguments
     */
    static int array[] = {1, 7, 9, 3, 7, 11, 15};
    static int array2[] = {2, 6, 8, 12, 16, 22};
    static int array3[] = {10, 20, 30, 40 , 5, 41, 31, 20, 11, 7};
    public static void main(String[] args) {
        // TODO code application logic here
        for(int i = 0; i < array.length; i++)
        {
            int even = 0;
            if(array[i] % 2 == 0){
                even = i;
            }
            int odd = 0;
            if(array[i] % 2 != 0){
                odd = i;
            }
            int distance;
            distance = even - odd;
            System.out.println(distance);
        }
    }
}
java arrays
1个回答
0
投票

您的代码中的问题是,每当我们遇到一个偶数或奇数时,evenodd变量都会被修改。

您应该使用两个boolean变量,以便仅查找第一个奇数和偶数。

boolean isEvenFound = false;
boolean isOddFound = false;
int distance = -1;
for(int i = 0; i < array.length; i++)
{
    int even = 0;
    if(array[i] % 2 == 0 && !isEvenFound){
        even = i;
    }
    int odd = 0;
    if(array[i] % 2 != 0 && !isOddFound){
        odd = i;
    }
}
if(isEvenFound && isOddFound)
    distance = even - odd;
System.out.println(distance);
© www.soinside.com 2019 - 2024. All rights reserved.