0
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

3
Contributors
6
Replies
7
Views
5 Years
Discussion Span
Last Post by JamesCherrill
Featured Replies
  • 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 … Read More

0

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

Edited by JamesCherrill: n/a

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.

0

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
}
}
1

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 is null for some value of i

0

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

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?

Edited by JamesCherrill: n/a

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.