Четене и изчисляване на сума от цели числа от файл в Java

Да предположим, че имам прост текстов файл Simple.txt, който съдържа данни като тези

1 2 3 4 5 6       

or

1
2
3
4
5       

как да прочета този файл и да отпечатам сумата от целите числа с помощта на Java?


person Enam Ahmed Shahaz    schedule 14.11.2015    source източник
comment
Използвайте Scanner. Прегледайте данните си while hasNextInt() и получете това nextInt().   -  person Pshemo    schedule 14.11.2015
comment
Google около „скенер“ и „следващ“   -  person Dúthomhas    schedule 14.11.2015
comment
stackoverflow.com/questions/2788080/reading- a-text-file-in-java и след това преминете през масива   -  person JRsz    schedule 14.11.2015


Отговори (2)


Опитайте този код.

import java.io.*;
import java.util.*;

public class SumNumbers {

public static void main(String args[]){
    try{
        File f = new File(args[0]);
        Scanner scanner = new Scanner(f);
        int sum = 0;
        while (scanner.hasNext()){
            sum += scanner.nextInt();
        }
        System.out.println("Sum:"+sum); 
    }catch(Exception err){
        err.printStackTrace();
    }

}
}

РЕДАКТИРАНЕ: Ако искате да уловите неправилни входове във файла, можете да промените цикъла while, както следва

         while (scanner.hasNext()){
            int num = 0;
            try{
                num = Integer.parseInt(scanner.nextLine());
            }catch(NumberFormatException ne){

            }
            sum += num;
        }
person Ravindra babu    schedule 14.11.2015
comment
Не, моля, не използвайте try-catch за обработка на неправилни типове въвеждане. Скенерът ни позволява да използваме hasNextTYPE, така че нека го използваме вместо това. В случай на неправилен тип просто извикайте has... и консумирайте тази неправилна стойност с next или nextLine (ако искаме да консумираме всички стойности в реда след неправилната). - person Pshemo; 14.11.2015
comment
Трябва поне да проверите дължината на args, преди да се опитате да получите достъп до неговите елементи; не разчитайте на това, че потребителят предоставя правилните аргументи на командния ред. - person jub0bs; 14.11.2015

Опитайте тази.

import java.util.*;
import java.io.File;
import java.io.IOException;

public class ReadFile
{
    public static void main(String[] args)
    throws IOException
    {
        Scanner textfile = new Scanner(new File("Simple.txt"));

        filereader(textfile);
}   


   static void filereader(Scanner textfile)     
{         
    int i = 0;         
    int sum = 0;          
    while(textfile.hasNextLine())         
    {       
        int nextInt = textfile.nextInt();          

        System.out.println(nextInt);             
        sum = sum + nextInt;
        i++;         
    }     
}
person Saedawke    schedule 14.11.2015
comment
Защо while(i ‹= 4)? Исках да прочета до края на файла не при някакво конкретно условие. - person Enam Ahmed Shahaz; 14.11.2015
comment
трябва да използвате while(textfile.hasNextLine()) - person Saedawke; 14.11.2015
comment
така че бихте ли гласували и приемете моя отговор. - person Saedawke; 14.11.2015