编写一个程序,该程序将搜索数组以查找第一个奇数。如果找到了奇数,则找到奇数之后的第一个偶数。返回第一个奇数和第一个偶数之间的距离。如果找不到奇数或数组中没有偶数,则返回-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);
}
}
}
您的代码中的问题是,每当我们遇到一个偶数或奇数时,even
或odd
变量都会被修改。
您应该使用两个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);