2016-11-13 2 views
-1

Я получаю сообщение об ошибке, которое утверждает в ArrayList не может быть преобразовано в целое на мой return arrJava: Несовместимые типы: ArrayList <Integer> не могут быть преобразованы в Int

Я пишу программу, в которой я должен прочитать все int из файла и вычислить их сумму. Я также обрабатывать все исключения, поэтому, если исключение, то функция должна возвращать 0.

Вот мой код:

public static int intFileSum(String fileName) 
    { 
     ArrayList<Integer> arr=new ArrayList<Integer>(); 
     InputStream fis=new FileInputStream(fileName); 
     Scanner s=new Scanner(fis); 
     try { 
      while (s.hasNextInt()) { 
       arr.add(s.nextInt()); 
      } 
     } 
     catch (FileNotFoundException e) { 
      return 0; 
     } catch (IOException f) { 
      return 0; 
     } finally { 
      fis.close(); 
      s.close(); 
      return arr; 
     } 
    } 

Вот мой блок тест, который должен пройти после того, как файл для чтения :

public void testSumIntsHappyPath() throws Exception 
    {  
     int sum=Assignment11.intFileSum("inputs/ints1.txt"); 
     Assert.assertEquals(10, sum); 

     sum=Assignment11.intFileSum("inputs/ints2.txt"); 
     Assert.assertEquals(56, sum); 
    } 

Любая помощь приветствуется.

Спасибо!

+0

'public static int intFileSum' не может' return arr' ... Изменить возвращаемый тип –

+0

'ArrayList ' не может быть преобразован в целое! Посмотрите на свое возвращаемое значение и тип возвращаемого значения, и прочитайте сообщение об ошибке! – Li357

+0

Спасибо. Я изменил его на intFileSum (что по существу означало бы, что метод вызывает себя.) Теперь он говорит, что не может найти символ – rls1982

ответ

0

Зачем вам нужен Arraylist?

Вы хотите суммировать цифры, так и сделайте это.

public static int intFileSum(String fileName) { 
    int sum = 0; 
    InputStream fis=new FileInputStream(fileName); 
    Scanner s=new Scanner(fis); 
    try { 
     while (s.hasNextInt()) { 
      sum += s.nextInt(); 

А потом, return sum

0

До сих пор все, что вы сделали, это прочитать все данные из файла и поместить их в массив (метод add добавляет элемент в массив, он не вычисляет никакой суммы). Затем вы пытаетесь вернуть массив arr, но возвращаемый тип метода - int, что вызывает ошибку.

Вместо попробовать что-то вроде этого (я не думаю, что вам нужен даже массив, если вы не планируете использовать его для чего-то еще позже):

int TOTAL = 0; 
while (s.hasNextInt()) { 
    TOTAL += s.nextInt(); 
} 

то вместо «обратных обр;» вы хотите:

return TOTAL; 

Примечание: вам, возможно, придется добавить некоторые проверки и для правильного ввода.

+0

Я собирался удалить это, поскольку видел, как другие ответили, когда я писал с тем же ответом, но, основываясь на его/ее ответе на комментарии, я думаю, что запросчик может извлечь пользу из объяснения на начало того, почему его ошибка, поэтому я оставлю это. – TDWebDev

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