2017-01-24 2 views
-1

Suchen und Zählen eines Wortes in einer Textdatei, jedoch nicht ignorieren des vollständigen Stopps mit Trennzeichen. Ich verwende ein Trennzeichen, um den vollständigen Halt zu ignorieren, wenn es nach einem Wort vorhanden ist. Ich versuche, eine Datei zu erstellen, indem ich Benutzereingaben benutze, und frage sie dann nach einem Wort, das sie in der Textdatei suchen wollen, und zeige ihnen, wie oft es im Text vorgekommen ist. das ist meine Hauptklasse public class Haupt {Suchen und Zählen eines Worts in einer Textdatei, aber kein vollständiges Anhalten mithilfe von Trennzeichen ignorieren

public static void main(String []args) throws IOException 
{ 

     str s=new str(); 
     s.writer(); 
     s.reader(); 


} 
} 



this is my class that has both the methods to create and read a file. 

public void reader() 
{ 
     String s; 
    int i=0; 
    //Reading The File 
     try { 
      FileReader f=new FileReader("karan.txt"); 
       Scanner sc=new Scanner(f); 
       Scanner st=new Scanner(System.in); 
       System.out.print("Enter string to be found and counted: "); 
       s=st.nextLine(); 
       System.out.print("\n"); 
       sc.useDelimiter("."); 
       sc.nextLine(); 
       while(sc.hasNext()) 
       { 
        if(sc.next().equals(s)) 
       { 

        i++; 
       } 
       } 
      System.out.println("The number of times the word "+s+" is present is "+i); 

     } catch (FileNotFoundException ex) { 
      System.out.println("File not found"); 
     } 
} 
//Writing The File 
public void writer() throws IOException 
{ 

     try { 
      FileWriter fw=new FileWriter("karan.txt"); 
       PrintWriter p=new PrintWriter(fw) ; 
       Scanner st=new Scanner(System.in); 
       System.out.println("Enter Text."); 
       p.print(st.nextLine()); 
       p.close(); 
      System.out.println("File has been written successfuly."); 

     } catch (FileNotFoundException ex) { 
      System.out.println("Error!"); 
     } 
} 

dies der Ausgang ist, wenn ich die Begrenzerleitung

Enter Text. 
    karan is best of the best. 
    File has been written successfuly. 
    Enter string to be found and counted: best 
    The number of times the word best is present is 0 

dies ist der Ausgang gehalten habe, wenn ich die Begrenzerleitung entfernen Text eingeben .

karan is best of the best 
    File has been written successfuly. 
    Enter string to be found and counted: best 
    The number of times the word best is present is 2 
    BUILD SUCCESSFUL (total time: 23 seconds) 

aber ich mag die Antwort 2 sein, auch wenn ich schreibe karan Beste vom Besten ist. beachten Sie den Punkt am Ende, ich möchte der Compiler den Punkt zu ignorieren und geben Sie mir die Antwort 2, d. H. Es sollte auch das Wort am Ende am besten mit Punkt zu zählen.

danke für die Hilfe im Voraus.

+1

Was dies mit Javascript zu tun hat? – Snowmonkey

Antwort

0

Sie benötigen ein paar Änderungen in reader() Methode zu machen:

  • entfernen sc.nextLine(); vor while Schleife, dass die erste Zeile überspringt, und verschiebt den Cursor zur nächsten Zeile, wird es nicht funktionieren, wenn die Datei hat nur eine Zeile.

  • ändern sc.useDelimiter(".");-sc.useDelimiter("\\.");, müssen Sie . Charakter entkommen als useDelimiter regex akzeptiert und . bedeutet ein beliebiges Zeichen in regex.

  • Ändern Sie if(sc.next().equals(s)) zu if(sc.next().contains(s)), Sie müssen nur überprüfen, ob der string irgendwo in der Zeile vorhanden ist.

sollte Unten arbeiten:

try { 
    FileReader f = new FileReader("G://1.txt"); 
    Scanner sc = new Scanner(f); 
    Scanner st = new Scanner(System.in); 
    System.out.print("Enter string to be found and counted: "); 
    s = st.nextLine(); 
    System.out.print("\n"); 
    sc.useDelimiter("\\."); 
    while (sc.hasNext()) { 
     if (sc.next().contains(s)) { 

      i++; 
     } 
    } 
    System.out.println("The number of times the word " + s + " is present is " + i); 

} catch (FileNotFoundException ex) { 
    System.out.println("File not found"); 
} 
+0

hat nicht funktioniert, als ich schrieb "Karan besten und besten." und suchte nach Wort am besten gab es mir nur 1 nicht 2, was es geben soll. Der Compiler ignoriert den vollständigen Stopp nach dem zweiten "besten". –

Verwandte Themen