2015-04-04 44 views
0

我一直想弄清楚如何正確打印我的方法返回。空指針異常排序合併數組列表

當程序打印我的方法返回時,我在第45行(我試圖打印方法的行)發出nullPointerException錯誤。

*我確實嘗試使返回到靜態方法,以便它可以訪問。

如何初始化「答案」變量,以便我可以在我的方法之外打印它? 預先感謝您

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函數的局部變量,另一個是在類的靜態字段。你永遠不會初始化第二個。