2016-11-17 7 views
-2

У меня проблема с моим кодом, и я не могу понять, что не так. В основном проект, над которым я работаю, хочет, чтобы я использовал статические методы для выполнения нескольких различных задач с использованием массивов. То, что я застрял сейчас, в частности, это печать моего массива.Нужно печатать массив другим способом

Первое, что мне нужно было сделать, это задать пользователю размер своего массива, а затем ввести данные. После этого я должен принять минимальное значение и максимальное значение, а затем поменять их. Я почти уверен, что мой код правильно, но когда я вызываю метод, у меня возникает ошибка. Это то, что я до сих пор, и я получаю сообщение об ошибке на линии 42 (начало метода свопа), 66 и 69:

public class ArraysStaticMethods { 
    static int[] array; 
    static public int arraySize; 
    static public int max; 
    static public int min; 

    //will create an array with user's input 
    private static int[] readInputs(int arraySize){ 
     Scanner keyboard = new Scanner(System.in); 

     System.out.print("Enter the length of your array: "); 
     arraySize = keyboard.nextInt(); 
     array = new int[arraySize]; 

     for (int i = 0; i <= array.length - 1; i++) { 
     System.out.print("Enter an integer: "); 
      int num = keyboard.nextInt(); 
      array[i] = num; 
     } 

      //to test 
     System.out.println("Your array before:"); 
     System.out.println(Arrays.toString(array)); 

     return array; 
    } 

    //finds index of max and min values and swaps them 
    public static int[] swap(int[] array){ 
     max = array[0]; 
     min = array[0]; 
     int maxIndex = 0; 
     int minIndex = 0; 
     for(int index = 1; index < array.length; index++){ 
      if (array[index] > max){ 
       max = array[index]; 
       maxIndex = index; 
      } 
      if (array[index]<min) { 
       min = array[index]; 
       minIndex = index; 
      } 
     } 
     array[maxIndex] = min; 
     array[minIndex] = max; 

     System.out.println("Your array after:"); 
     System.out.println(Arrays.toString(array)); 
     return array; 
    } 

    public static void displayOutputs(){ 
     readInputs(arraySize); 
     swap(array); 
    } 

    public static void main(String[] args) { 
     displayOutputs(); 
    } 
} 
+2

Вы забыли рассказать нам, какие ошибки вы получаете и на каких линиях вы их получаете. – David

+0

Ошибки находятся в строках 42, 66 и 69, и в нем сказано «исключение в потоке» main «java.lang.NullPointerException at», а затем эти строки. –

+2

@ A.Brian http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it – rafid059

ответ

3

Вы никогда фактически присваивая результат readInputs() к array, так как вы скрывая его внутри этого метода. Вы возвращаете локальную версию, но не используете ее.

Вместо

int[] array = new int[arraySize]; 

в строке 17, просто сделать

array = new int[arraySize]; 

ИЛИ вы можете изменить метод displayOutputs() присвоить результат readInputs() к array, прежде чем передать его в swap().

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