2013-11-13 3 views
0

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

Willow Mary 
154 189.5 95 76 63.51 

Вот что я пытался. Он продолжает идти в мой отсек.

import java.io.File; 
import java.util.Scanner; 


public class Assignment10 { 
    public static final int NUM_SALESPEOPLE = 20; 

    public static void main(String[] args) { 

     SalesPerson[] list = new SalesPerson[NUM_SALESPEOPLE]; 

     try { 
      int people = 0; 
      Scanner fileInput = new Scanner(new File("A10.txt")); 

      while (fileInput.hasNext()) { 
       String firstName = fileInput.nextLine(); 
       String lastName = fileInput.nextLine(); 
       double firstSales = fileInput.nextDouble(); 
       double secondSales = fileInput.nextDouble(); 
       double thirdSales = fileInput.nextDouble(); 
       double fourthSales = fileInput.nextDouble(); 

       SalesPerson person = new SalesPerson(firstName, lastName, 
         firstSales, secondSales, thirdSales, fourthSales); 
       list[people] = person; 
       people++; 

      } 
     } catch (Exception ex) { 
      System.out.println("Error opening file."); 
     } 
+2

Добавьте 'ex.printStackTrace()' в блок catch, чтобы вы могли видеть, что такое исключение. –

+1

Вы должны сами регистрировать исключение. Попробуйте 'ex.printStackTrace();' –

+0

Пожалуйста, удалите блок 'try-catch', позвольте' Exception' быть выброшенным, а затем опубликуйте всю трассировку стека, которая появится в консоли. В противном случае мы просто догадываемся. –

ответ

2

Если ваш файл является форматом, который вы говорите, вы читаете слишком много строк при чтении каждого человека. Этот код:

String firstName = fileInput.nextLine(); 
String lastName = fileInput.nextLine(); 

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

После прочтения удвоений вам также необходимо использовать любое завершающее пробел (включая новую строку). Попробуйте fileInput.skip("\\w");.

Вместо этого прочитайте всю строку удвоений как одну строку и разделите ее на части с помощью кода (например, используя split(" ")) или путем разбора другим способом.

0

Этот код

String firstName = fileInput.nextLine(); 
String lastName = fileInput.nextLine(); 

съедает 2 линии, так что следующий nextDouble() звонки обыкновение идти туда, где вы хотите, чтобы идти.

Также

} catch (Exception ex) { 
     System.out.println("Error opening file."); 
    } 

не всегда верно, потому что вы ловите все Exception «S не только те, которые связаны файл. По крайней мере, также выводится сообщение вашего Исключения генерации:

} catch (Exception ex) { 
     System.out.println("Something went wrong: " + ex.getMessage()); 
    } 

еще лучше, поймать все виды исключений, генерируемых в вашей программе отдельно и обеспечить осмысленное сообщение об ошибке, или поведение восстановления каждого типа Exception.

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