few problems with same code..

doha786's Avatar, Join Date: Apr 2010
Newbie Member
hi,
i am just trying to print all the 'method' names of java files from my folder. its not showing any error but during testing i face different kinds of problem for each output with same code..

in addition, i might mention how program suppose to work...
->it reads every files line by line and find 1st parentheses ( "(" ), if have any then get the whole line before parentheses. Then locate any return value has or not in those line, if found then the next word should be a method name for that java file.

i followed this:
Quote:
Access modifier--- Return value-- Method Name (parameter...)
or,
Return Value--Method Name()
Code:
String target = "(";
String[] returnValue={"String", "int", "double", "void", "char", "long", "float" };
 Map<String, File> names = new HashMap<String, File>();
 
try{ 
File directory = new File("C:/JavaFiles"); // where all java files are gathered 
File filelist[]= directory.listFiles();

   for (File f: filelist) {
    
            FileReader fr = new FileReader (f);    
            BufferedReader reader = new BufferedReader (fr);

                while (reader.ready()){ 
                result=reader.readLine();
                                
                   if (result.indexOf(target)!= -1 ){ 
                  String line = result.substring(0, result.indexOf(target));
                            
                       Scanner scan=new Scanner(line);            
                       for (int i=0; i<returnValue.length; i++) {
                       word=scan.findWithinHorizon(returnValue[i], 100);
                                
                                if(word!=null) {
               methodName=scan.next()+scan.findWithinHorizon("", 0);
                                names.put(methodName, f);
                for (String found: names.keySet()){
          File file = names.get(found);
        System.out.println(found+"\t"+"FileName: "+file.getName());
            }
                                    
                               }// end 2nd if
                            }// end 2nd for
                        }//end 1st if
                   }//end while    
        }//end 1st for
}//end try


catch(Exception e){e.printStackTrace(); }
virxen's Avatar, Join Date: Nov 2009
Pro contributor
Quote:
String[] returnValue={"String", "int", "double", "void", "char", "long", "float" };
this is wrong approach!

a method can return nothing if the method is declared void
and also it can return a class or even an ArrayList or Vector
not only the above you use.

Also you are looking for "(" but you can put it even for mathematics equations or for type casting and for many more reasons.