2012-07-10 3 views
0

Привет, ребята У меня есть текстовый файл, содержащий суммы на подстроке (34, 47) каждой строки. Мне нужно суммировать все значения до конца файла. У меня есть этот код, который я начал строить, но я не знаю, как действовать дальше:Добавить значения из текстового файла

public class Addup { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) throws FileNotFoundException, IOException { 
    // TODO code application logic here 
    FileInputStream fs = new FileInputStream("C:/Analysis/RL004.TXT"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(fs)); 
    String line; 
    while((line = br.readLine()) != null){ 
     String num = line.substring(34, 47); 

     double i = Double.parseDouble(num); 
     System.out.println(i); 
    } 
} 
} 

Выход таков:

1.44576457E4 
2.33434354E6 
4.56875685E3 

количество находится в двух знаков после запятой и I нужен результат также в двух десятичных местах. Каков наилучший способ достичь этого?

ответ

2

DecimalFormat является лучшим вариантом для использования:

double roundTwoDecimals(double d) { 
      DecimalFormat twoDForm = new DecimalFormat("#.##"); 
     return Double.valueOf(twoDForm.format(d)); 
} 

Вы можете изменить свой код:

public static void main(String[] args) throws FileNotFoundException, IOException { 
    // TODO code application logic here 
    double sum = 0.0; 
    FileInputStream fs = new FileInputStream("C:/Analysis/RL004.TXT"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(fs)); 
    String line; 
    while((line = br.readLine()) != null){ 
     String num = line.substring(34, 47); 

     double i = Double.parseDouble(num); 
     sum = sum + i; 
     DecimalFormat twoDForm = new DecimalFormat("#.##"); 
     System.out.println(Double.valueOf(twoDForm.format(i))); 
    } 
     System.out.println("SUM = " + Double.valueOf(twoDForm.format(sum))); 
} 
} 
+0

Как насчет сложения сумм? – ErrorNotFoundException

+1

Добавлена ​​сумма part.I думаю, после добавления всех значений только вы должны усечь сумму. Вы не должны усекать все индивидуальные значения, а затем добавлять их, поскольку это может иметь большое значение. – vikiiii

+0

Функция формата decinal по-прежнему дает мне тот же результат для очень больших сумм – ErrorNotFoundException

1

Или используйте String.format для форматирования двойного значения.

System.out.println (String.format("%1.2f", i)); 
+0

Thankz Liu Yan Я объединил String.format и предлагаемый метод vikiiii, и я получил желаемый результат – ErrorNotFoundException

Смежные вопросы