2015-04-04 2 views
0

Я пытался выяснить, как правильно напечатать возврат моего метода.null указатель исключение сортировка списка объединенных массивов

Когда программа печатает возврат моего метода, я даю ошибку nullPointerException в строке 45 (строка, где я пытаюсь напечатать метод).

* Я попытался сделать возврат к статическому методу, чтобы он был доступен.

Как инициализировать переменную «ответ», чтобы я мог ее распечатать вне моего метода? Спасибо заранее

import javax.swing.JOptionPane; 
public class ListSortMerge { 

static int[]answer; 

public static void main(String[] args) { 
int v1 = 0, v2 = 0; 

    for(int c = 0; c <= 1; c++) { 
     String values = JOptionPane.showInputDialog("How many values would you like to store in list "+(c+1)+"?"); 
     if (c==0) { 
      v1 = Integer.parseInt(values); 
     } 
     else{ 
     v2 = Integer.parseInt(values); 
     } 
    } 

    int[] numbers1 = new int[v1]; 
    int[] numbers2 = new int[v2]; 

    merge(numbers1,numbers2); 

    int i; 

    System.out.println("\nList 1 before the sort"); 
    System.out.println("--------------------"); 
    for(i = 0; i < (v1); i++) { 
     System.out.println(numbers1[i]); 
    } 

    System.out.println("\nList 2 before the sort"); 
    System.out.println("--------------------"); 
    for(i = 0; i < (v2); i++) { 
     System.out.println(numbers2[i]); 
    } 

    System.out.println("\nList after the sort"); 
    System.out.println("--------------------"); 
    for(i = 0; i < (v1+v2); i++) { 
     System.out.println(answer[i]); 
    } 
} 

public static int[] merge(int[] a, int[] b) { 

int[] answer = new int[a.length + b.length]; 


for(int c = 0; c < (a.length); c++) 
{ 
    String aVal1 = JOptionPane.showInputDialog("Input list 1 value " +(c+1)); 
    a[c] = Integer.parseInt(aVal1); 
    } 

for (int c = 0; c < (b.length); c++){ 
     String aVal2 = JOptionPane.showInputDialog("Input list 2 value " +(c + 1)); 
     b[c] = Integer.parseInt(aVal2); 
     } 


int i = 0, j = 0, k = 0; 

while (i < a.length && j < b.length) 
{ 
    if (a[i] < b[j])  
     answer[k++] = a[i++]; 

    else   
     answer[k++] = b[j++];    
} 

while (i < a.length) 
    answer[k++] = a[i++]; 


while (j < b.length)  
    answer[k++] = b[j++]; 

return answer; 

} 
} 

ответ

0

У вас есть два различных answer переменные: одна локальная переменная в функции merge и другое статическое поле в классе. Вы никогда не инициализируете второй.

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