954,523 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Null Pointer Exception ,while using for loop

import java.util.*;
public class PetrinetSim 
{
public int noofplaces=0;
public int nooftransitions=0;
public inputarc[] ip=new inputarc[50];
public outputarc[] op=new outputarc[30];
ArrayList<place> pl= new ArrayList<place>();
public Scanner in=new Scanner(System.in);
place[] p;
transition[] t;
void createplaces()
{
int i;
p=new place[noofplaces]; 
for(i=0;i<noofplaces;i++)
{
  p[i]=new place();
  p[i].token=0;
  p[i].id=i;
}   
}
void createtransitions()
{
int i,n,m;
t= new transition[nooftransitions];
for(i=0;i<nooftransitions;i++)
{
    t[i]=new transition();
    t[i].id=i;
}
    
}

void createarcs()
{
int i=0,n=0,m=0,s=0;

System.out.println("Available Transitions");
for(i=0;i<nooftransitions;i++)
    System.out.println("T"+t[i].id);
    System.out.println("========================================================");
    System.out.println("Available Places");
for(i=0;i<noofplaces;i++)
    System.out.println("P"+p[i].id);
    System.out.println("========================================================");
i=0;
System.out.println("Enter the Place that holds Token");
s=in.nextInt();
p[s].token=1;
pl.add(p[s]);
System.out.println("Enter the Input Transitions");
while(true)
{
System.out.println("Enter the place Id:");
n=in.nextInt();
ip[i]=new inputarc();
ip[i].p=new place();
ip[i].t=new transition();
ip[i].p=p[n];
System.out.println("Enter the Transition Id:");
m=in.nextInt();
ip[i].t=t[m];
System.out.println("Enter another Transition:1.Yes 2.Exit");
m=in.nextInt();
if(m==2)
break;
i++;
}
System.out.println("Enter the Output Transitions");
i=0;
while(true)
{
System.out.println("Enter the Transition Id:");
m=in.nextInt();
op[i]=new outputarc();
op[i].t=new transition();
op[i].p=new place();
op[i].t=t[m];
System.out.println("Enter the place Id:");
n=in.nextInt();
op[i].p=p[n];
System.out.println("Enter another Transition:1.Yes 2.Exit");
m=in.nextInt();
if(m==2)
break;
i++;
}
}
void Simulate()
{
int pf=0,i=0;
transition ft=new transition();
while(true)
{
/***
     * Checking whether all places in the ArrayList have Tokens.
     */
for(place ps: pl)
{
if(!hastoken(ps))
{
System.out.println("Missing Token!!!Further transition not possible");
System.exit(0);
}
}
/**
 * Choosing a place with lowest index in ArrayList (pl) to check for transitions.
 */
place f=pl.get(0);
/**
 * Searching input transitions for this place
 */
for(inputarc sp: ip)
{
if(f.id==sp.p.id)
{
ft=sp.t;
pf=1;
break;
}
}
if(pf!=1)
{
System.out.println("Final Place Reached , Place: P["+ f.id+ "]" );
System.exit(0);
}
else
{
/**
     * found transition with place 'f' from input arcs.
     */
/**
* Checking whether same transition is done by other places 
*/
pf=0;
transition te=new transition();
for(i=0;i<ip.length;i++)
{  
//System.out.println("Print"+te.id);
    
if(ft.id==ip[i].t.id)
{
if(!hastoken(ip[i].p))
{
System.out.println("Missing Token!!!Further transition not possible");
System.exit(0);
}
}
}

/**
 * The execution of following lines shows that all places input to that transition have token
 */

/**
 * Removing tokens from places and Clearing ArrayList
 */
for(place pt:pl)
{
pt.token=0;
}
pl.clear();
for(outputarc oa:op)
{
if(ft.id==oa.t.id)
{
oa.p.token=1;
pl.add(oa.p);
}
}

}
}
}
public  boolean hastoken( place s)
{
if(s.token==1)
    return true;
else
    return false;
}

public static void main(String a[])
{
Scanner in=new Scanner(System.in);
PetrinetSim ps=new PetrinetSim();
System.out.println("Enter the no of Places:");
ps.noofplaces=in.nextInt();
ps.createplaces();
System.out.println("Enter the no of Transitions:");
ps.nooftransitions=in.nextInt();
ps.createtransitions();
ps.createarcs();
ps.Simulate();
}
}
Exception in thread "main" java.lang.NullPointerException
	at PetrinetSim.Simulate(PetrinetSim.java:142)
	at PetrinetSim.main(PetrinetSim.java:195)
Java Result: 1


i tried almost all the available solutions to solve this ,but couldnt solve it yet.
help me out to solve this .. thanking

dineshswamy
Light Poster
29 posts since Feb 2010
Reputation Points: 10
Solved Threads: 0
 

well, it's telling you on which line you are using a variable that you haven't instantiated yet.
add a print right before it, so you can check which var it is, or add default values to your variables, that should help you out.

stultuske
Posting Sensei
3,137 posts since Jan 2007
Reputation Points: 1,114
Solved Threads: 433
 

line 142 reads: if(ft.id==ip[i].t.id)
so print every one of those values (including intermediates like ip[i].t) immediately before that line to see which is (are) null.

JamesCherrill
Posting Genius
Moderator
6,371 posts since Apr 2008
Reputation Points: 2,130
Solved Threads: 1,073
 

i have a question
is it necessary to initialize objects of another classes ,in case these objects hold their own fields.

i ve a class 'transition' with a field 'id' and in another class 'outputarc' i ve object of transition as a field . i supply value to this field(transition) by assigning it to a class 'transition' object.the question is before assigning should i initialize the field 'id' of transition class. tell me if its confusing. thanking you..

class transition
{
int id;
}
class outputarc
{
transition t=new transition();
void somefunction()
{
//assigning value for t
transition s=new transition();
t=s;
//do i need to initialize id of transition class
}
}
dineshswamy
Light Poster
29 posts since Feb 2010
Reputation Points: 10
Solved Threads: 0
 

If the field is an Object then yes (unless null is a valid value for it). But if it's a primitive then no, because they all have default values (0 or false).

Looking at all the info you have provided so far I would suspect that ip[i] is null for some value of i

JamesCherrill
Posting Genius
Moderator
6,371 posts since Apr 2008
Reputation Points: 2,130
Solved Threads: 1,073
 

thankyou the error is gone now!! but is it possible to redirect in the program (java)
when an exception occured... thankyou once again

dineshswamy
Light Poster
29 posts since Feb 2010
Reputation Points: 10
Solved Threads: 0
 
...is it possible to redirect in the program (java) when an exception occured...


Sorry, I don't understand the question. Can you expand/re-phrase it?

JamesCherrill
Posting Genius
Moderator
6,371 posts since Apr 2008
Reputation Points: 2,130
Solved Threads: 1,073
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You