Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

long code with one problem

Posted on 2003-11-02
5
239 Views
Last Modified: 2010-03-31
sorry about this code but it is very long and i fam facing problem with it
this is the code

import java.io.*;
import java.util.*;

public class SIM{  
     
      public static void main(String[] args) throws IOException {
           
      BufferedReader stdin = new BufferedReader(new FileReader("SIM.txt"));
     
  //sim1    
        String st_p = stdin.readLine();
             StringTokenizer ss=new StringTokenizer(st_p);
            String b=ss.nextToken();
             
              int a=2;
          double bc=0.02;
             
              if (!b.equalsIgnoreCase("start_program")){
                   System.out.println("Sytax error");
                         
              }
             
              else if (b.equalsIgnoreCase("Start_program")){
                                         
                        b=ss.nextToken();
 //sim1
               
                           
                     while((st_p = stdin.readLine())!=null){
                           st_p = stdin.readLine();
                     
                      if(st_p.equalsIgnoreCase("Begin_Define")){ //sim2
               
               String en_p;
               StringTokenizer st;
               String bd2;
               
               while((en_p = stdin.readLine())!=null){
                      if(en_p.equals(""))continue;  
                    st=new StringTokenizer(en_p);
                    if(st.hasMoreTokens()){
                    bd2=st.nextToken();    
                     
                  if(!bd2.equalsIgnoreCase("End_program")){  
                           while(!bd2.equalsIgnoreCase("End_Define;")) {
                   
                 if(bd2.equalsIgnoreCase("Var")) {
                         
                                       bd2=st.nextToken();                    
                               
            while(!bd2.equals(";")) {
                                                                                               
                                                      while (st.hasMoreTokens()){
                                            bd2=st.nextToken();
                                           
                                                          if(bd2.equals(":")){
                                                                
                                            bd2=st.nextToken();
                                 
                                            if(bd2.equalsIgnoreCase("Integer")||bd2.equalsIgnoreCase("real")){
                                                 System.out.println("Good Grammer");                                                
                                            }
                                            else{ System.out.println("bad Grammer");}                                        
                                        }                                      
                                    }    
                                    }
                          }
                          else if(bd2.equalsIgnoreCase("Constant")) {
                         
                                       bd2=st.nextToken();                    
                               
                                   while(!bd2.equals(";")) {
                                   
                                                      while (st.hasMoreTokens()){
                                            bd2=st.nextToken();
                                           
                                                          if(bd2.equals("=")){
                                                                
                                            bd2=st.nextToken();
                                 
                                            if(bd2.equals("+")||bd2.equals("-")){
                                                bd2=st.nextToken();
                                               
                                                if(bd2.equals(Integer.toString(a))||bd2.equals(Double.toString(bc))){
                                                  System.out.println("good Grammer");
                                                  }
                                            }
                                            else if(bd2.equalsIgnoreCase("Null")){
                                                  
                                            }
                                           
                                            else{ System.out.println("bad Grammer");}                                        
                                        }                                      
                                    }    
                              }
                        }
                    en_p = stdin.readLine();
                           st=new StringTokenizer(en_p);
                           if (st.hasMoreTokens()){
                           bd2=st.nextToken();   }
                           
                           } //sim2  
                           
                           //sim3
                     if(en_p.equalsIgnoreCase("Begin_Block")){
           
               
               while((en_p = stdin.readLine())!=null){
                      if(en_p.equals(""))continue;  
                    st=new StringTokenizer(en_p);
                    if(st.hasMoreTokens()){
                    bd2=st.nextToken();    
                     
                           while(!bd2.equalsIgnoreCase("End_Block;")) {
                                 
                                 if(bd2.equalsIgnoreCase("read")) {
                                       
                                       bd2=st.nextToken();
                                       if (bd2.equals("(")){                                             
                                             
                                             while (st.hasMoreTokens()){
                                                                               
                                        while (!bd2.equals(";")) {  
                                               bd2=st.nextToken();
                                              
                                                                if(bd2.equals(",")){
                                                                
                                                  bd2=st.nextToken();}
                                              else if (bd2.equals(")")) {
                                                    bd2=st.nextToken();
                                              }
                                          }
                                          System.out.println("read");
                                 }
                             }
                         }
                         else if(bd2.equalsIgnoreCase("write")) {
                                       
                                       bd2=st.nextToken();
                                       if (bd2.equals("(")){                                             
                                             
                                             while (st.hasMoreTokens()){
                                                                               
                                        while (!bd2.equals(";")) {  
                                               bd2=st.nextToken();
                                              
                                                                if(bd2.equals(",")){
                                                                
                                                  bd2=st.nextToken();}
                                              else if (bd2.equals(")")) {
                                                    bd2=st.nextToken();
                                              }
                                          }
                                          System.out.println("write");
                                 }
                             }
                         }
                         else if(bd2.equalsIgnoreCase("write")||!bd2.equalsIgnoreCase("read")){
                         if(st.hasMoreTokens()){
                         bd2=st.nextToken();
                         while (!bd2.equals(";")){
                               
                               if(bd2.equals(":=")){                                     
                                     bd2=st.nextToken();
                                     if(bd2.equals("(")){
                                           bd2=st.nextToken();
                                           
                               while(st.hasMoreTokens()&& !bd2.equals(")")){
                                                 bd2=st.nextToken();
                                     if(bd2.equals("*")||bd2.equals("/")){
                                                       bd2=st.nextToken();
                                                 }
                                           }
                                           bd2=st.nextToken();                                                                                
                                                            if(bd2.equals("+")||bd2.equals("-")){
                                                                  bd2=st.nextToken();
                                                      
                                                      }
                                                System.out.println("brack");      
                                                }
                                                else{
                                                            while (st.hasMoreTokens()){
                                                                  bd2=st.nextToken();
                                                            if (bd2.equals("-")||bd2.equals("+")||bd2.equalsIgnoreCase("null")){
                                                                  bd2=st.nextToken();
                                                            }
                                                            }
                                                      System.out.println("expr");      
                                                }       
                                          }
                                          else if(st.hasMoreTokens()){
                                          bd2=st.nextToken();                  
                                          }
                                                     
                         }
                          }
                      }
                    en_p = stdin.readLine();
                           st=new StringTokenizer(en_p);
                           if (st.hasMoreTokens()){
                           bd2=st.nextToken();   }
                    }
                }
                        }
                    }//sim3
                           
                           
                           
                           
                           
                           }            
                      if(st.hasMoreTokens()){            
                         bd2=st.nextToken();}
                         if(!bd2.equals(b)){
                               System.out.println(bd2);
                               System.out.println("Program name is not matching");
                               }
             if(bd2.equals(b)){
                   if (st.hasMoreTokens()){
                           bd2=st.nextToken();   }
                                                          
             if(bd2.equals(";")){
                   System.out.println("Good Grammer");
                                     return;}
                               }
                   }
                         }                                                      
              }  
          }
          
            }
      }
    }

this code reading from a text file called SIM and this file like this

start_program sa

Begin_Define

constant yaer = + 2 ;
constant ret = - 0.02 ;

var basic, grade : integer ;
var adj_salary : real ;
var comp_A_amount : real ;

end_define;

Begin_block

adj := ( grade * year ) + basic ;

ret := adj * rat ;

read ( basic , grade ) ;
write ( basic , good ) ;

end_block;

end_program sa ;

it gave me the following exception
good Grammer
good Grammer
Good Grammer
Good Grammer
Good Grammer
Exception in thread "main" java.lang.NullPointerException
        at java.util.StringTokenizer.<init>(StringTokenizer.java:119)
        at java.util.StringTokenizer.<init>(StringTokenizer.java:149)
        at SIM.main(SIM.java:99)
Press any key to continue...


can you help me please
0
Comment
Question by:badr1981
  • 3
  • 2
5 Comments
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9669322
i suggest this one


where ever you use nextToken(), put like this

st.nextToken()==null?"":stnextToken();

hope you got my idea
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9669330
You are using toknizer in different code areas,

so where ever it is there replace the next token with it

st.nextToken()==null?"":st.nextToken();
ss.nextToken()==null?"":ss.nextToken();

and so on
0
 
LVL 92

Accepted Solution

by:
objects earned 30 total points
ID: 9669361
You don't always check that readLine() has returned a line.
The following is setting en_p to null.

                    en_p = stdin.readLine();
                         st=new StringTokenizer(en_p);
0
 
LVL 92

Expert Comment

by:objects
ID: 9692703
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9699010
badr1981's code
 while((en_p = stdin.readLine())!=null){
                     if(en_p.equals(""))continue;  
                    st=new StringTokenizer(en_p);

objects code
                         en_p = stdin.readLine();
                         st=new StringTokenizer(en_p);


i haven't find any basic difference between two codes. Just curious to know if there is any difference

:-)
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
jar file executable 12 58
pagenation logic how it is working in my code 1 52
Problem to Alipay 10 41
Java: anonymous class 4 29
Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers learn about the third conditional statement “else if” and use it in an example program. Then additional information about conditional statements is provided, covering the topic thoroughly. Viewers learn about the third conditional statement …
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

792 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question