2017-03-05 2 views
0
package BIB; 
import java.io.*; 
import java.lang.*; 
public class fileParser{// start class file parser 

     static Map<String, String> word ; 
     Mapping_File mf = new Mapping_File(); 
     static Scanner scanner = new Scanner(System.in); 

     public static void main(String[] args){ 

      String Readline = "WCRE"; 
      String Converted = null; 
      word = mf.getWordsMap(); 

      if(word.containsKey(Readline)){ 
        Converted = word.get(Readline);   
      } 

      else if(word.isEmpty()){ 
       Converted = "the map you are looking in is empty"; 
       } 

     ` else 
      { 

       System.out.println("Couldnot find the elaborated form. 
            Please Type the elaborated form you 
            would like to use for : " 
          + Readline + "'"); 
       String query = scanner.next(); 
       Writer output; 
       output = new BufferedWriter(new  
           FileWriter("HashMap.txt", true)); 
       String Input = Readline + "=" + query; 
       output.append(Input); 
       output.close(); 
       Converted = "Your Input was added to the mapping file"; 

      }// end else 
      System.out.println(Converted); 


    }// end main method 
    }// end class 

Was habe ich hier eine Datei erstellt wurde, sollte ausgefeilte Form eines Wortes „WCRE“ von einer Zuordnungsdatei Mapping_File erhalten, die sie aus einer Textdatei liest. Aber die Textdatei, die ich habe, enthält das Wort WCRE nicht.Anfügen eine modifizierten Benutzereingabe in eine vorhandenen Textdatei

Dieses Programm soll Benutzer für das ausgearbeitete Formular fragen, weil es nicht in der Textdatei existiert, die ich habe, die es erfolgreich tut. Auch die Eingabe-Benutzertypen sollen in die Textdatei zusammen mit den Worten "WCRE =" davor geschrieben werden.

Allerdings, wenn ich diesen Code so etwas wie dies ausgeführt wird, bis zum Ende der Datei hinzugefügt:

WCRE=ProceedingsWCRE=ofWCRE=20thWCRE=WorkingWCRE=ConferenceWCRE=onWCRE=ReverseWCRE=EngineeringWCRE=(WCRE) 

Was ich will, ist:

WCRE = Proceedings of 20. Arbeitskonferenz über Reverse Engineering (WCRE)

wo "Proceedings der 20. Working Conference auf Reverse Engineering (WCRE)" Benutzereingabe ist.

Die Zuordnungsdatei Konstrukt ist im Anschluss an die Mapping-Datei funktioniert gut, während aus der Textdatei zu lesen und eine Karte

package BIB; 
import java.io.*; 
import java.util.*; 
public class Mapping_File{ 

    static Map<String, String> words = new HashMap<>(); 


    public Mapping_File(){ 

     this.words = words; 
     String filePath = "HashMap.txt";   
     String line; 
     BufferedReader reader = null; 
     try{ 

      reader =new BufferedReader(new FileReader(filePath)); 
      while((line = reader.readLine())!=null){ 
       String[] parts = line.split("=", 2); 
       String key = parts[0]; 
       String value = parts[1];  
       words.put(key, value); 

      }// end while 
     }// end try block 

     catch(Exception e){ 
       System.out.println("Couldnot find the requested file."); 
      }// end catch block 

     }// end constructor 

     public Map<String, String> getWordsMap(){ 

      return words; 
     }// end get method getWordsMap 


}// end of class Mapping_file 

Die Textdatei zu schaffen, von dem i folgt betitelt HashMap.txt lese: ICSE = Proceedings of the international Conference on Software Engineering (ICSE)

IWSC = Proceedings of the international Workshop on Software Clones (IWSC)

ASE = Proceedings des Internationalen Conferenc e auf automatisierte Software Engineering (ASE)

ACSAC = Proceedings of the Annual Applications Conference Computer Security (ACSAC)

ICSE (Nier Track) = Proceedings of the International Conference on Software Engineering (ICSE), Nier Spur

+0

was ist "konvertiert"? Bitte teilen Sie das Mapping_File-Konstrukt sowie – nullpointer

+0

sind Sie sogar in der Lage, auf 'word' innerhalb der' main() 'zuzugreifen? – nullpointer

+0

Mit Wort 'static Map word = new HashMap () {{ put (" ICSE "," Proceedings der Internationalen Konferenz für Software Engineering (ICSE) "); setzen ("IWSC", "Proceedings der International Workshop on Software Clones (IWSC)"); setzen ("WCRE", "Proceedings der 20. Arbeitskonferenz für Reverse Engineering (WCRE)"); }}; 'so. Ihr Code in der fileParser-Klasse scheint gut zu funktionieren. Überprüfen Sie einfach, ob Sie eine korrekte Karte zurückgeben oder nicht. – nullpointer

Antwort

0

Das Programm funktionierte auf meinem Computer, wenn ich Scanner innerhalb der Hauptmethode erklärte. Scanner und auch ersetzt scanner.next() mit scanner.nextLine(), weil ich eine ganze Zeile lesen sollte.