NullPointer Exception being thrown [duplicate] - java

This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12 answers)
Closed 7 years ago.
Ok so I am reading what has already been asking about NPE on here but I can't seem to find anything that will help with my code. It says that It is being thrown at .searchCollection(COLLECTION_NAME).
public class PantryDataStorage {
private static final String COLLECTION_NAME = "pantry";
private static HashMap<String, PantryItem> pantry = getDatabaseItems();
private static String API_KEY = "c3672b0c-b96c-4145-8b75-bd6895b5458e";
private static OrchestrateClient client = new OrchestrateClient(API_KEY);
ShoppingItem shoppingItem = new ShoppingItem();
public static void savePantryItem(String itemName, PantryItem updatedPantryItem){
pantry.put(itemName, updatedPantryItem);
client.kv(COLLECTION_NAME, itemName).put(updatedPantryItem).get().getKey();
}
public static void deletePantryItem(String itemName){
pantry.remove(itemName);
client.kv(COLLECTION_NAME, itemName)
.delete()
.get();
}
public static HashMap<String, PantryItem>getDatabaseItems(){
SearchResults<PantryItem> result = client
.searchCollection(COLLECTION_NAME)
.limit(100)
.get(PantryItem.class, "*")
.get();
Iterator<Result<PantryItem>> iterator = result.getResults().iterator();
HashMap<String, PantryItem> listHash = new HashMap<String, PantryItem>();
while(iterator.hasNext()){
PantryItem pantryitem = iterator.next().getKvObject().getValue();
listHash.put(pantryitem.getItemName(), pantryitem);
}
return listHash;
}
public static boolean itemConsists(String itemName){
pantry.containsKey(itemName);
return true;
}
public static void iteratorMethod(){
Iterator<PantryItem> pantryItemIterator = pantry.values().iterator();
while (pantryItemIterator.hasNext()) {
System.out.println(pantryItemIterator.next());
}
}
}

Starting from savePantryItem you are using client variable and it wasn't declared nor initialized anywhere outside this and other methods as well. Consider declaring client as a private instance variable.

Related

Java code says: nullPointerException [duplicate]

This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12 answers)
Closed 6 years ago.
I have this very simple code:
public class Player{
private int x,y,velX,velY,width,height,id;
private boolean isControllable;
public Player(int _x,int _y,int _width,int _height,int _id,boolean _cont){
x = _x;
y = _y;
width = _width;
height = _height;
id = _id;
isControllable = _cont;
if(_cont == true){
addToCont();
}
}
private void addToCont(){
Main.controllable.add(this);
}
}
And this:
public class Main {
public static Render render = new Render();
public static Controlls controll = new Controlls();
public static LinkedList<Player> controllable;
public static void main(String[] args) {
controllable = new LinkedList<Player>();
render.height = 750;
render.width = 1000;
render.RenderWindow();
}
}
As You can see I am trying to add this instance of player class to the linked list. But it returns an error:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
at game.Player.Player.addToCont(Player.java:23)
at game.Player.Player.<init>(Player.java:18)
at game.Main.Render.<init>(Render.java:28)
at game.Main.Main.<clinit>(Main.java:9)
What am I doing wrong?
controllable is not instantiated. Replace it in Main with:
public static LinkedList<Player> controllable = new LinkedList<>();

List with NullPointerException [duplicate]

This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12 answers)
Closed 6 years ago.
I have a problem with this part of the code. It seems that if I try to add something to a list of Client I get a NullPointerException. I really don't know why because if I debug this part of the code the variable of type Client has information. If someone can help me I would be grateful. Here is the part of the code where the exception appears:
public class Customers {
private ArrayList<Client> listaClienti;
public Customers()
{
}
public void addClient(Client c,int i)
{
listaClienti.add(i, c);
}
public void deleteClient(Client c)
{
listaClienti.remove(c);
}
public Client getClient(int id)
{
return listaClienti.get(id);
}
}
You are not instantiating your list:
private ArrayList<Client> listaClienti = new ArrayList<>();
You may also instantiate inside your class constructor if you wish:
public Customers() {
listaClienti = new ArrayList<>();
}
You got a NullPointerException because you didn't initialize your list
private List<Client> listaClienti = new ArrayList<>();
first you have to insatantiate your array
ArrayList<Client> listaClienti = new ArrayList<>();
or
public Customers()
{
listaClienti = new ArrayList<Client>();
}

Error with adding to lists with an Integer variable - Java [duplicate]

This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12 answers)
Closed 7 years ago.
Say I have the class:
package school;
public class SchClass {
private Student[] students;
private int numStudents = 0;
public SchClass() {
}
public void addStudent(Student s) {
this.students[this.numStudents] = s;
this.amountStudents++;
}
}
and I am trying to run this in another class:
import school.SchClass;
import school.Student;
import school.Tutor;
public class JavaTesting {
public static void main(String[] args) {
Student s = new Student();
Tutor t = new Tutor();
SchClass shc = new SchClass();
sch.setTutor(t);
sch.addStudent(s);
}
}
When I do this, it reports this NullPointerException:
Exception in thread "main" java.lang.NullPointerException
at school.SchClass.addStudent(SchClass.java:8)
at javatesting.JavaTesting.main(JavaTesting.java:10)
What is wrong? I'm sure I coded this perfect but it still reports an error.
member students is null
public class SchClass {
private Student[] students = new Student[ size ];
private int numStudents = 0;
public SchClass() {
}
public void addStudent(Student s) {
this.students[this.numStudents] = s;
this.amountStudents++;
}
}
and it will work only untils amountStudents < size, then execption will occur so better is
public class SchClass {
private List< Student > students = new ArrayList< Student >();
public SchClass() {
}
public void addStudent(Student s) {
this.students.add( s );
}
}
Read about the Collection framework. If you want dynamic "arrays" you may use List<T>
Arrays are not dynamic.
Also, you have numerous errors in your class. What is for example this.amountStudents++ supposed to do? Furthermore I am surprised that your code does not already fail at sch.setTutor(t);, since you do not have declared a variable called sch. Did you mean shc?

Nullpointerexception and no compilation errors. Can't find cause [duplicate]

This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12 answers)
Closed 8 years ago.
been struggling with this problem since a couple of hours. Including looking through the previous questions answered. (Im really new in Java, basicly started a couple of days ago)
it keeps giving me NullpointerExceptions between Register.läggTillhund(nyHund); in the first class and hundRegister.add(nyHund); in the second class.
I have no idea what might be causing them. Does anyone have Ideas?
The purpose of the code (when finished) is to add an object from the 3rd class, into a list in the secondclass using the firstclass as the "main program".
Thanks for the help!
Oskar
First Class (Main)
public class testning {
public static void main(String[] args) {
Hund nyHund = new Hund("Daisy", 13, "labrador", 22.3);
System.out.println(nyHund.toString());
System.out.println(nyHund);
Register.läggTillHund(nyHund);
}
}
Second Class:
import java.util.ArrayList;
public class Register {
private static ArrayList<Hund> hundRegister;
public static void läggTillHund(Hund nyHund){
hundRegister.add(nyHund);
System.out.println(nyHund);
}
public Register(){
hundRegister = new ArrayList<Hund>();
}
}
Third Class
public class Hund {
private String namn;
private int ålder;
private double vikt;
private String ras;
public Hund(String hundnamn, int hundålder, String hundras, double hundvikt) {
this.namn = hundnamn;
this.ålder = hundålder;
this.ras = hundras;
this.vikt = hundvikt;
}
public String getNamn() {
return namn;
}
public int getÅlder() {
return ålder;
}
public double getSvanslängd() {
if ("tax".equals(ras)){
return 3.7;
}else{
return ((vikt*ålder)/10);
}
}
public String toString() {
return namn + "\n" + ålder + "\n"+ras+"\n"+vikt+"\n"+getSvanslängd();
}
}
You're accessing static method. In this case constructor never working. Use private static ArrayList<Hund> hundRegister = new Arraylist<>() ;and delete the constructor. To see what's going on add System.out.println line to construct and you'll see it will never works

Exception NullPointer, suggestions? [duplicate]

This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12 answers)
Closed 8 years ago.
I am following the ebook Big Java Late Objects - and I have problem resolving on of the tasks. It is about inheritance. There is Question class and one sub ChoiceQuestion class that extends it.
But when I run the code in my testclass it calls the null exception and I don't know why.
Exception in thread "main" java.lang.NullPointerException
at ChoiceQuestion.addChoice(ChoiceQuestion.java:12)
at TestClass.main(TestClass.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Here are my classes:
public class Question {
private String text;
private String answer;
/**
* Constructs a queston with empty question and answer.
*/
public Question(){
text = "";
answer = "";
}
//=============Setter methods============
public void setText(String questionText){
text = questionText;
}
public void setAnswer(String correctResponse){
answer = correctResponse;
}
//==============Getter Methods=============
public boolean checkAnswer(String response){
return answer.equals(response);
}
public void display(){
System.out.println(text);
}
}
And here is my subclass:
class ChoiceQuestion extends Question {
private ArrayList<String> choices;
//=========Methods==============
public void addChoice(String choice,boolean correct){
choices.add(choice);
if(correct){
//convert choices.size() to string
String choiceString = "" + choices.size();
this.setAnswer(choiceString);
}
}
public void display(){
// Display the question text
super.display();
// Display the answer choices
for(int i=0;i<choices.size();i++){
int choiceNumber = i + 1;
System.out.println(choiceNumber + ": " + choices.get(i));
}
}
}
And my test Class:
import java.util.Scanner;
public class TestClass {
public static void presentQuestion(Question q){
q.display();
System.out.println("Your answer: ");
Scanner in = new Scanner(System.in);
String response = in.nextLine();
System.out.println(q.checkAnswer(response));
}
public static void main(String[] args) {
Question first = new Question();
first.setText("James Gosling");
first.setAnswer("James Gosling");
ChoiceQuestion second = new ChoiceQuestion();
second.setText("In which country was the inventor of Java born? ");
second.addChoice("Austria", false);
second.addChoice("Canada",true);
second.addChoice("Denmark",false);
second.addChoice("United States",false);
presentQuestion(first);
presentQuestion(second);
}
}
Object choices is never initialized.
In Java, objects must be initialized before you can use them. That's why an attempt to call choices.add(choice) yields such an exception.
It is often a good idea to initialize member objects in constructors.
In this case, it looks like you should write a constructor for ChoiceQuestion and initialize your choices ArrayList there.
class ChoiceQuestion extends Question {
private ArrayList<String> choices;
ChoiceQuestion(){
choices = new ArrayList<>();
}
//...
Write private ArrayList choices = new ArrayList();
In the class when you declared it.
You need to initialize your list before use:
private List<String> choices = new ArrayList<String>();
The choices member is never initialized, so the first time you try to access it, you fail with a NullPointerException. You could, for example, initialize it in the class definition:
class ChoiceQuestion extends Question {
private ArrayList<String> choices = new ArrayList<>();
// Rest of the class

Categories