2013-11-21 2 views
-3
public class ArrayProject 
{ 
    private int[] myArray; 

    public static void main(String[] args) 
    { 
     int myArray[] = {2, 45, 12, 15, 16}; 

     System.out.println("Minimium Value:" + findMin(myArray)); 
     System.out.println("Maximium Value:" + findMax(myArray)); 
    } 

    public ArrayProject(int[] x) 
    { 
     myArray=x; 
    } 

    public static int findMin(int[] myArray){ 
     int minValue = myArray[0]; 
     for(int i=1;i<myArray.length;i++){ 
      if(myArray[i] < minValue){ 
       minValue = myArray[i]; 
      } 
     } 
     return minValue; 
    } 

    public static int findMax(int[] myArray){ 
     int maxValue = myArray[0]; 
     for(int i=1;i<myArray.length;i++){ 
      if(myArray[i] > maxValue){ 
       maxValue = myArray[i]; 
      } 
     } 
     return maxValue; 
    } 

    public void swap (int minIndex, int maxIndex) 
    { 
     int temp; 
     temp = myArray[minIndex]; 
     myArray[minIndex] = myArray[maxIndex]; 
     myArray[maxIndex] = temp; 
    } 

    public int findValue(int value) 
    { 
     for(int i=1;i<myArray.length; i++){ 
      System.out.println(myArray[i]); 
      return myArray[i]; 

     } 

    } 

} 

У меня возникла проблема с компиляцией метода findValue. Последний метод. Может ли кто-нибудь помочь мне исправить? ........................ Я смущен тем, как вы возвращаете значение как.95% Завершенный код массива JAVA. Может ли кто-нибудь помочь мне найти мою ошибку?

Класс в основном находит min max и значения массива.

+4

Ваш вопрос сбивает с толку. Вы сказали, что у вас проблема с методом findValue, какая проблема? Каков результат, который вы ожидаете от метода & what is output value? Пожалуйста, опубликуйте ошибку компиляции, если она есть – Chaos

+0

Для справки, 'findValue' всегда будет возвращать 1-е (второе) значение. Это подскочило бы и подмигивало бы вам, если бы вы правильно отложили свой код. – cHao

+2

** Я смущен ** Мы смущены с вопросом ур .. :-) –

ответ

1

Вы никогда не создаете экземпляр ArrayProject, поэтому ваш конструктор никогда не будет вызван, а член myArray никогда не будет установлен.

1

Вы возвращаете цикл int in for. Попробуйте объявить значение переменной переменной int переменной и вернуть эту переменную int. Или вернуть весь массив

1

Не каждый путь кода в вашей функции findValue() возвращает значение. Вам нужно добавить оператор return за пределами цикла for. Это необходимо, поскольку цикл for может выполняться или не всегда выполняться в зависимости от длины myArray. Если цикл for не выполняется, то функция, которую вы объявили для возврата, и int не будет выполнять какой-либо оператор возврата, который не разрешен компилятором.

1

вы можете использовать это.

int[] nums={2, 45, 12, 15, 16}; 
Arrays.sort(nums); 
System.out.println("Minimum = " + nums[0]); 
System.out.println("Maximum = " + nums[nums.length-1]); 
1

Что делать, если значение не найдено? Ничего не возвращается, но метод ожидает int. Вы должны вернуть значение int для всех возможных сценариев в findValue().

Вы можете добавить произвольно невозможно число (в соответствии с вашими ожиданиями), как -1:

return -1; 

после

for (int i = 1; i < myArray.length; i++) { 
     System.out.println(myArray[i]); 
     return myArray[i]; 

} 

если значения не найдены, так как вы используете примитивов. Если ваш тип возвращаемого значения является Integer, вместо этого вы можете вернуть значение null, что имеет большее значение. В противном случае метод будет работать только для неотрицательных чисел.

1

Исходное исправление для вашей проблемы, так как ваш оператор return находился в for-loop и может не всегда выполняться.

public int findValue(int value) 
{ 
    int returnValue = -1; 
    for(int i=1;i<myArray.length; i++){ 
     System.out.println(myArray[i]); 
     returnValue = myArray[i]; 

    } 
    return returnValue; 
} 

Неплохое исправление, но оно компилируется.

Кроме того, если функция нужна, чтобы найти значение, нужно добавить, если-заявление, чтобы проверить, если искомая величина совпадает с номером в позиции массива

public int findValue(int value) 
{ 
    int returnValue = -1; 
    for(int i=1;i<myArray.length; i++){ 
     System.out.println(myArray[i]); 
     if(value == myArray[i]){ 
      returnValue = myArray[i]; 
     } 
    } 
    return returnValue; 
} 

-1 является, если элемент не был найденный.

Смежные вопросы