2016-04-08 16 views
0

Ich versuche, alle 4 Worte meiner Textdatei mit Großbuchstaben in der Konsole, aber dieser Code druckt alle meine Datei Kapital zu drucken, und ich kann, warum nicht herausfinden?Wie liest man eine Textdatei und erstellt alle 4 Wörter alle Großbuchstaben in das Konsolenfenster?

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class FileText { 
    public static void main(String[] args) { 
     Scanner sc = null; 
     try { 
      sc = new Scanner(new File("players.txt")); 
      int count = 0; 
      while (sc.hasNext()) { 
       String line = sc.next(); 
       String[] elements = line.split(" "); 

       for (int i = 0; i < elements.length; i++) { 
        if (i/3 == 0){ 
         System.out.println(elements[i].toUpperCase()); 
        } 
        else { 
         System.out.println(elements[i]); 
        } 
       } 
      } 
      System.out.println("The number of capital letters are: " + count); 
     } catch (FileNotFoundException e) { 
      System.out.println(e.getMessage()); 
     } 
     finally { 
      sc.close(); 
     } 
    } 
} 

Antwort

5

Es gibt zwei Dinge schief gehen:

a) die Linie String[] elements = line.split(" "); spaltet nicht die Linie bei jedem Wort. Die Art und Weise Sie die Scanner verwenden bereits teilt sie (weil die Scanner ‚s Standard-Trennzeichen ein Leerzeichen ist), was bedeutet, dass Ihre line Variable immer nur ein Wort enthält.

Fix dies durch sc.useDelimeter("\n"); vor der while(sc.hasNext()) Schleife.

b) ersetzen

if(i/3 == 0){ 

mit

if(i%4 == 0){ //modulo division 
+1

* "Diese Fix von' sc.useDelimeter Verwendung (" \ n"); '' vor, während (sc. hasNext()) 'loop" * Nun, es wäre viel besser/einfacher 'String Zeile zu verwenden = sc.nextLine();.', meinst du nicht? :) – Tom

+0

@Tom wahr, du könntest auch das: D – f1sh

0

hier vollständige Code ist:

public static void main(String[] args) { 
    Scanner sc = null; 
    try { 
     sc = new Scanner(new File("players.txt")); 
     int count = 0; 
     while (sc.hasNextLine()) { 
      String line = sc.nextLine(); 
      String[] elements = line.split(" "); 

      for (int i = 0; i < elements.length; i++) { 
       if ((i+1) % 4 == 0) { 
        System.out.println(elements[i].toUpperCase()); 
       } else { 
        System.out.println(elements[i]); 
       } 
      } 
     } 
     System.out.println("The number of capital letters are: " + count); 

    } catch (FileNotFoundException e) { 
     System.out.println(e.getMessage()); 
    } finally { 
     sc.close(); 
    } 

} 

Für die Datei mit Inhalt: w1 w2 w3 w4 W5 W6 W7 W8 W9 w10 w11 w12 Ausgang wird sein: w1 w2 w3 W4 W5 w6 w7 W8 W9 w10 w11 W12

Verwandte Themen