Добавление каждого элемента списка в Java NullPointerException для arrayList - PullRequest
1 голос
/ 01 апреля 2020

Эта программа для добавления элементов двух списков. Консольные входы имеют следующую форму:

"10, 20, 30"
"20, 30, 40, 50, 60"

вывод будет

[30, 50, 70 50, 60]

Примечание: - если один или оба списка могут быть нулевыми или пустыми, вывод должен быть [] или пустым список. В некоторых тестовых случаях я получаю ошибку исключения Nullpointer

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Source {
    public List<Integer> getSumOfListElements(List<Integer> first,List<Integer> second){
        List<Integer> list3 = new ArrayList<Integer>();
        if(second.isEmpty() || second==null){ //error Nullpointerexception is generated here
            if(first.isEmpty() || first==null){
                return list3;
            }else{
                return first;
            }
        }
        else if(first.isEmpty() || second==null){ //error Nullpointerexception is generated here
            return second;
        }

        int l1 = first.size();
        int l2 = second.size();

        if(l1>l2){
            for(int i=0; i<l1; i++){
                if(i<l2)
                    list3.add(first.get(i)+second.get(i));
                else
                    list3.add(first.get(i));
            }

        }//else part if l2>l1

        return list3;
    }

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String str1 = sc.nextLine();
        List<Integer> list1 = new ArrayList<Integer>();
        String st1 = str1.replaceAll("^\"|\"$", "");
        //same logic for list2 creation



        if(!st1.isEmpty()){
            String[] ss1=st1.split(", "); 
            for(int i=0;i<ss1.length;i++){
                list1.add(Integer.parseInt(ss1[i]));
            }
        }

        //same if function for list2

        if(st1.isEmpty()){
            System.out.println(list2);
        }....
        //same else if for list and for both
        ....   
        }else{
            Source obj = new Source();
            System.out.println("null object");
        }
    }
}

1 Ответ

1 голос
/ 01 апреля 2020

Нулевая проверка всегда должна быть первой, как if(second.isEmpty() || second==null){ // Это неверно

if(second==null || second.isEmpty()){ // Это исключит исключение нулевого указателя

В строке ниже есть ошибка

else if(first.isEmpty() || second==null){ //error Nullpointerexception is generated here

Правильный код

else if(first==null || first.isEmpty()){ //error Nullpointerexception is generated here

...