簡體   English   中英

空指針異常排序合並數組列表

[英]null pointer exception sorting merged array list

我一直在試圖找出如何正確打印我的方法的回報。

當程序打印我的方法的返回值時,我在第45行(我嘗試打印該方法的行)給出了nullPointerException錯誤。

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

如何初始化“ answer”變量,以便可以在方法之外進行打印? 先感謝您

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;

}
}

您有兩個不同的answer變量:一個是merge函數中的局部變量,另一個是類中的靜態字段。 您永遠不會初始化第二個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM