2015-09-27 55 views
1

我有很多的文本文件(最多20個)和每一個文件都有它的內容是這樣的Java從文本中提取值的文件

21.0|11|1/1/1997 
13.3|12|2/1/1997 
14.6|9|3/1/1997 

和每個文件大約有超過300線。

,所以我面臨的問題是這樣的,我怎麼能提取該文件的內容的一切,只有第一個值 。

例如我想提取的值(21.0,13.3,14.6等.....),所以我可以決定在所有的20個文件的最大數和最小。

我已經從我的理解寫了這個代碼來體驗它的文件 ,但沒有奏效

String inputFileName = "Date.txt"; 
File inputFile = new File(inputFileName); 
Scanner input = new Scanner(inputFile); 
int count = 0; 
while (input.hasNext()){ 
    double line = input.nextDouble(); //Error occurs "Exception in thread "main" java.util.InputMismatchException" 
    count++; 
    double [] lineArray= new double [365]; 
    lineArray[count]= line; 
    System.out.println(count); 
     for (double s : lineArray){ 
     System.out.println(s); 
      System.out.println(count); 

而這一次也

String inputFileName = "Date.txt"; 
File inputFile = new File(inputFileName); 
Scanner input = new Scanner(inputFile); 

while (input.hasNext()){ 
    String line = input.nextLine(); 
    String [] lineArray = line.split("//|"); 
     for (String s : lineArray){ 
     System.out.println(s+" "); 
} 
  • 注:我還在原地一種在Java中

一個初學者,我希望我是清楚的,並謝謝

+0

這個問題的交易。該網站應該用於管理特定的編程問題。提供您的嘗試,並且如果您在發佈特定問題時遇到特定問題。 –

+0

@John你知道如何從文本文件中讀取一行文本嗎? – user3437460

+0

是的,我不知道如何從文本文件閱讀 – John

回答

1

對於每行文本,檢查它是否包含管道字符。如果是這樣,抓住文本的第一部分,並解析它加倍。

double val = 0.0; 
Scanner fScn = new Scanner(new File(「date.txt」)); 
while(fScn.hasNextLine()){ //Can also use a BufferedReader 
    data = fScn.nextLine(); 
    if(data.contains("|")) //Ensure line contains "|" 
     val = Double.parseDouble(data.substring(0, data.indexOf("|"))); //grab value 
} 
+0

感謝我真的需要知道如何再次抓住價值感謝 – John

0
try (BufferedReader br = new BufferedReader(new FileReader(file))) { 
    String line; 
    while ((line = br.readLine()) != null) { 
     String res = s.split("\\|")[0]; 
    } 
} 
+0

您能否介紹一下如何解決問題所需的代碼? – Phani

+0

非常感謝你 – John

1

或者你可以嘗試一些流,很酷的東西

這樣做你的工作
import java.io.IOException; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.util.Arrays; 
import java.util.List; 
import java.util.stream.Collectors; 
import java.util.stream.Stream; 

public class MinMaxPrinter { 

    public static void main(String[] args) { 
     final List<String> files = Arrays.asList("file", "names", "that", "you", "need"); 

     new MinMaxPrinter().printMinMax(files); 
    } 

    public void printMinMax(List<String> fileNames) { 
     List<Double> numbers = fileNames.stream() 
       .map(Paths::get) 
       .flatMap(this::toLines) 
       .map(line -> line.split("\\|")[0]) 
       .map(Double::parseDouble) 
       .collect(Collectors.toList()); 

     double max = numbers.stream().max(Double::compare).get(); 
     double min = numbers.stream().min(Double::compare).get(); 

     System.out.println("Min: " + min + " Max: " + max); 
    } 

    private Stream<String> toLines(Path path) { 
     try { 
      return Files.lines(path); 
     } catch (IOException e) { 
      return Stream.empty(); 
     } 
    } 
} 
+0

謝謝,我真的很感激你的努力 – John