hi here is my code import java.util.*; import java.io.*; import java.util.Scanner; class Node { public boolean marked; public int node_no; public String node_type; //public float value; //public float control_value; public String usevar[]; public String defvar[]; public int child[]; public int par[]; public int actIn[]; public int actOut[]; public int advice; } public class Input { public int n,nn,vn; //vn total no of variables, n total no of node ,nn node no. public int i,use_var,def_var,p_c,c_c; // public String c,f,var_nam[]; public Node node[]; StringTokenizer str,str1; Input() throws Exception { FileReader df=new FileReader("Input.txt"); Scanner fr=new Scanner(df); str=new StringTokenizer(fr.nextLine(),"$"); this.n=Integer.parseInt(str.nextToken()); //total no of nodes this.vn=Integer.parseInt(str.nextToken()); //toal no of variables var_nam=new String[vn]; //for total variables str=new StringTokenizer(fr.nextLine(),"$"); System.out.println("rtryutrty"+n+vn); for(int i=0;i<vn;i++) { String a=str.nextToken(); var_nam[i]=a; } node=new Node[n+1]; for(int i=1;i<=n;i++) { node[i]=new Node(); } i=1; while(fr.hasNextLine()) { c=fr.nextLine(); str=new StringTokenizer(c,"$"); //node no is parsed nn=Integer.parseInt(str.nextToken()); System.out.println(nn); node[i].node_no=nn; //node no is assigned str1=new StringTokenizer(str.nextToken()," "); use_var=str1.countTokens(); // no of use var node[i].usevar=new String[use_var]; for(int j=0;j<use_var;j++) { node[i].usevar[j]=str1.nextToken(); } for(int j=0;j<use_var;j++) { System.out.println(node[i].usevar[j]); } str1=new StringTokenizer(str.nextToken()," "); // for def var def_var=str1.countTokens(); node[i].defvar=new String[def_var]; for(int j=0;j<def_var;j++) { node[i].defvar[j]=str1.nextToken(); } for(int j=0;j<def_var;j++) { System.out.println(node[i].defvar[j]); } str1=new StringTokenizer(str.nextToken()," "); // parents node info p_c=str1.countTokens(); node[i].par=new int[p_c]; for(int j=0;j<p_c;j++) { node[i].par[j]=Integer.parseInt(str1.nextToken()); } for(int j=0;j<p_c;j++) { System.out.println(node[i].par[j]); } System.out.println("erhiwe"); str1=new StringTokenizer(str.nextToken()," "); // child node info c_c=str1.countTokens(); node[i].child=new int[c_c]; for(int j=0;j<c_c;j++) { node[i].child[j]=Integer.parseInt(str1.nextToken()); } for(int j=0;j<c_c;j++) { System.out.println(node[i].child[j]); } node[i].node_type=str.nextToken(); // node type //System.out.println("sfdsrsr\n\n\n"); int temp=Integer.parseInt(str.nextToken()); System.out.println(temp); node[i].actIn= new int[temp]; str1=new StringTokenizer(str.nextToken()," "); for(int temp1=0;str1.hasMoreTokens();temp1++) node[i].actIn[temp1]=Integer.parseInt(str1.nextToken()); //total actIn are Obtained temp=Integer.parseInt(str.nextToken()); System.out.println(temp); node[i].actOut= new int[temp]; str1=new StringTokenizer(str.nextToken()," "); for(int temp1=0;str1.hasMoreTokens();temp1++) node[i].actOut[temp1]=Integer.parseInt(str1.nextToken()); //total actOut are Obtained node[i].advice=Integer.parseInt(str.nextToken()); //advice vertex if not then simply put zero i++; //next node } } public static void main(String args[])throws Exception { Input i=new Input(); System.out.println("\nnew main\n"); for(int k=1;k<=i.n;k++) { //System.out.println("\nnew main\n"); System.out.print(i.node[k].marked); System.out.print(i.node[k].node_no+" a121a "); for(int j=0;j<i.node[k].usevar.length;j++) System.out.print(i.node[k].usevar[j]+" "); for(int j=0;j<i.node[k].defvar.length;j++) System.out.print(i.node[k].defvar[j]+" "); for(int j=0;j<i.node[k].child.length;j++) System.out.print(i.node[k].child[j]+" "); for(int j=0;j<i.node[k].par.length;j++) System.out.print(i.node[k].par[j]+" "); for(int j=0;j<i.node[k].actOut.length;j++) System.out.print(i.node[k].actOut[j]+" "); for(int j=0;j<i.node[k].actIn.length;j++) System.out.print(i.node[k].actIn[j]+" "); System.out.print(i.node[k].node_type+" "); System.out.println(" "); } } }
When i am trying to compile the code i found the following error
Error: Exception in thread "main" java.util.NoSuchElementException at
java.util.StringTokenizer.nextToken(Unknown Source)
at Input.
Actually this is an implementation of a slicing algorithm. The class Input.java specifies the Input to the program with the help of a text file. Below I am attaching the text file named Input.txt. the input file is too large in size. Please let me know more about the flaws.
58$14 name$Threadname$t$k$e$i$j$sc$x$y$z$a$b$n 57$$$$0$58$$$$$ 58$$$$57$59 60$$$$$ 59$$$$58$6$$$$$ 60$$$$58$33$$$$$ 6$7 33 34$7$59$7 8 9 10 12$$$$$$ 33$34 6 7$34$60$67 34 35 36 37 38 39$$$$$$ 7$8 15 34 35$7 34 $6$8$$$$$$ 34$35 7 8$7 34$33$35$$$$$$ 35$36 37 5 7 9 10 14 15$35$33 34$36 37$$$$$$ 59$$$$58$6$$$$$ 10$$8$6 8 9$11 14 17$$$$$$ 8$9 10 14 15 35 36 37$8$6 7$10 15$$$$$$ 9$$8 35$6 8$10 15$$$$$$ 36$$8 35$33 35$37$$$$$$ 37$$9 35$6 8$10 15$$$$$$ 38$$$33$40$$$$$$ 39$$$33$52$$$$$$ 40$$$37 38 69$41 45 46 50$$$$$$ 41$47 48 50 51 70 71 72 74$41$40$47 48$$$$$$ 46$47 49 45$45$40$47 48 49 70$$$$$$ 45$49 45 46$45$40$49$$$$$$ 47$48 45 46 49$41$41 45$48 49$$$$$$ 48$47 49 45 46 70 71 72 74$41$41 46 47 50 51$0$$$$$$ 49$47 49 45 46$45$45 46 47$0$$$$$$ 50$51 41 48$41$40$70 51 48$$$$$$ 51$41 48 50 51 71 72 74 70$41$40 50 75$48$$$$$$ 52$$$49$37 39$53 54 55 56$$$$$ 53$56$53$52$56$$$$$$ 54$56 27 28 29$54 27$52 27$56$$$$$$ 55$56 28 29$55$52 28$56$$$$$$ 56$53 54 55 27 28 29$53 54 55 27 28$52 53 54 55$0$$$$$$ 11$$$10$26$$$$$$ 12$$$6 24 66$13 16$$$$$$ 13$15$13$12$14 15$$$$$$ 14$8 9 10 15 14 35 36 37$8 35$10 13$15$sleep node$$$$$ 15$8 9 10 13 14 15 35 36 37$8 35 13$8 9 13 14$16$$$$$$ 16$$$12 15$0$$$$$$ 17$$$$29 64 10$19 23 24$$$$$ 19$24$19$17$24$$$$$$ 23$23 24 25$$17$24$$$$$$ 24$19 23 24 25$19$17 19 23$12 25$$$$$$ 25$23 24 25$$24$65$$$$$$ 26$$$11$27 28 29$$$$$$ 27$29 54 56$27 54$26$29$$$$$$ 28$29 55 56$28 55$26$29 55$$$$$$ 29$27 28 29 54 55 56$27 28 54 55$26 27 28$17 62$$$$$$ 62$$$29$63 65$pointcut vertex$$$$$ 63$$$62$64$$$$$$ startingadvice vertex 64$$$63$17$$$$$$ 65$$$25 62$66$$$$$$ startingadvice vertex 66$$$65$12$$$$$$ 67$$$33$68 70$poincut vertex$$$$$ 68$$$67$69$$$$$$ startingadvice vertex 69$$$68$40$$$$$$ 70$71 72 74 41 48 50 70 51$41$46 50 67$71 75 f1_in$$1$f1_in$$$ startingadvice vertex 71$70 71 72 74 41 48 50 51$41$70$72 74$$$$$$ 72$70 71 72 74 41 48 50 51$41$f1_in$0$$$$$$ 74$70 71 72 74 41 48 50 51$41$71 f1_in$0$$$$$$ 75$$$70$51$$$$$$
The algorithm is as follows:
import java.util.*; class DynamicSlice { String var_name; int par[]; DynamicSlice(int n) { par=new int[n+1]; //no of nodes is=n } } class Algo extends Input { int zc=n+1; DynamicSlice dn[][]=new DynamicSlice[zc][vn]; int rec_def[]; Algo() throws Exception {} public void init() { rec_def =new int[vn]; for(int i=1;i<n+1;i++) for(int j=0;j<vn;j++) dn[i][j]=new DynamicSlice(n); //set Dynamic slice is creATED for(int i=1;i<n+1;i++) for(int j=0;j<vn;j++) { dn[i][j].var_name=var_nam[j]; } } //variable name is assigned to each position public int varat(String x) { for(int i=0;i<vn;i++) if(x.equals(var_nam[i]))return(i); return 0; } // knowing the position of var in vaiable list public void a2(int nodeno) { for(int l=0; l<node[nodeno].usevar.length;l++) { int index = varat(node[nodeno].usevar[l]); for(int i=1;i<n+1;i++){ int k=dn[nodeno][index].par[i]; if(k!=0) if(node[k].marked=true) { dn[nodeno][index].par[k]=1; for(int j=1;j<=n;j++) { dn[nodeno][index].par[j]=(dn[k][index].par[j]==1)?1:0; } } } } } public void call2a() { for(int i=1;i<=n;i++) a2(node[i].node_no); } /* 2 A over*/ /* 2B starts */ public void call2b() { for(int i=1;i<=n;i++) { for(int j=0;j<node[i].defvar.length;j++) { int index = varat(node[i].defvar[j]); //index of def var in varnam list dn[i][index].par[i]=1; //dynamic slice updated rec_def[index]=i; node[rec_def[index]].marked=false; } node[i].marked=true; } } /* 2 C and 2 B over */ /* rest start*/ public void other() { for(int i=1;i<n+1;i++) { if(node[i].node_type.equals("pointcut")) { node[i].marked=true; for(int j=0;j<node[i].actIn.length;j++) node[node[i].actIn[j]].marked=true; for(int j=0;j<node[i].actOut.length;j++) node[node[i].actOut[j]].marked=true; if(node[i].advice>0) //advice vertex is marked along with the formal in formal out { node[node[i].advice].marked=true; for(int j=0;j<node[node[i].advice].actIn.length;j++) node[node[node[i].advice].actIn[j]].marked=true; for(int j=0;j<node[node[i].advice].actOut.length;j++) node[node[node[i].advice].actOut[j]].marked=true; } } if(node[i].node_type.equals("sleep")) { node[i].marked=true; } } } public void call3a() { System.out.println(" enter the var name and the node no"); int sw,sq; String arg; Scanner scan=new Scanner(System.in); arg=scan.next(); sw=scan.nextInt(); sq=varat(arg); //index no of arg for(int i=0;i<n;i++) { if(dn[sw][sq].par[i]==1) System.out.print(dn[sw][sq].par[i]+1); } } public static void main(String arg[]) throws Exception { //Input input=new Input(); Algo alg=new Algo(); alg.init(); System.out.println("\n\n\n\n\\n\n\n"); alg.call2a(); alg.call2b(); alg.other(); while(true) { alg.call3a(); System.out.println(" want to exit then enter 0"); Scanner scan=new Scanner(System.in); int i=scan.nextInt(); if(i==0)break; } }/*end of main*/ }
Ads