2017-04-19 24 views
-2
public class ReadTemps { 

    public static void main(String[] args) throws IOException { 
    // TODO code application logic here 

    // // read KeyWestTemp.txt 

    // create token1 
    String token1 = ""; 
懸停

在組件1個轉變作風我如何讀取和存儲重新嘗試?

+2

任何你不想使用'Scanner.nextLine()'的原因? –

+2

至少對我而言,你不清楚你在問什麼。你需要逐行閱讀和...? 「char」是什麼意思? - 它是原始值(即一個字母)? – Cargeh

+0

將所有代碼替換爲一行:'列表 lines = Files.readAllLines(Paths.get(「KeyWestTemp.txt」),UTF_8);'? – assylias

回答

0
import java.io.File; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Scanner; 

public class ReadTemps{ 

    public static void main(String[] args) throws IOException { 
     //taking the word to search from keyboard 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Enter the word you want to search: "); 
     String input = keyboard.nextLine(); 

     //counter for calculating how many times word wrote in line 
     int counter = 0; 
     //counter to find which line we are searching 
     int counterLine = 1; 

     // // read KeyWestTemp.txt 

     // create token1 
     String token1 = ""; 

     // for-each loop for calculating heat index of May - October 

     // create Scanner inFile1 
     Scanner inFile1 = new Scanner(new File("C:\\KeyWestTemp.txt")); 

     // Original answer used LinkedList, but probably preferable to use 
     // ArrayList in most cases 
     // List<String> temps = new LinkedList<String>(); 
     ArrayList<String> temps = new ArrayList<String>(); 

     // while loop 
     while (inFile1.hasNext()) { 
      // find next line 
      token1 = inFile1.nextLine(); 
      //removing whitespeaces 
      token1.replaceAll("\\s+",""); 
      //taking all the letters as String 
      for(int i = 0; i < token1.length(); i++) { 
       char c = token1.charAt(i); 
       String s = "" + c; 
       temps.add(s); 
      } 
      //adding a point to find line' end 
      temps.add("line"); 
     } 
     inFile1.close(); 

     String[] tempsArray = temps.toArray(new String[0]); 

     //searching on array to find first letter of word 
     for (int i = 0; i < tempsArray.length; i++) { 
      String s = temps.get(i); 
      //if its the end of line time to print 
      if(s.equals("line")) { 
       System.out.println("Line" + counterLine + " : " + counter + " occurrence "); 
       counterLine++; 
       counter = 0; 
      } 
      //if the first letter found need to search rest of the letters 
      if(s.equalsIgnoreCase("" + input.charAt(0))) { 
       s = ""; 
       try { 
        for(int j = i; j < i + input.length(); j++) { 
         String comp = temps.get(j); 
         if(comp.equalsIgnoreCase("" + input.charAt(j-i))) 
          s = s + comp; 
        } 
       } catch (IndexOutOfBoundsException e) { 

       } 
       //checks if found the word 
       if(s.equalsIgnoreCase(input)) 
        counter++; 
      } 
     } 
    } 
} 

讀線這是我得到的焦炭用於期望字符串搜索字符代碼。

+0

忘記使用'「」+ char'將'char'轉換爲'String',修復它。它現在可能工作。 –

+0

我想檢查一下,你能發短信給我的電子郵件嗎? [email protected] –

+0

這是可以在任何情況下工作的最終版本 –

-2

使用緩衝讀寫器,它通過線

try (BufferedReader br = new BufferedReader(new FileReader(fileName))) { 
    String fullLine; 
    while ((line = br.readLine()) != null) { 
    } 
} 
0

而不是使用inFile1.next();,使用inFile1.nextLine(),並且不要使用令牌字符串浪費時間。

while (inFile1.hasNext()) { 
     temps.add(inFile1.nextLine()); 
    }