2014-01-13 3 views
-2

У меня возникают некоторые проблемы при запуске этого кода. он продолжает давать мне ошибку! Я добавил исключение, если файл не найден. но он не будет работать ... большое спасибоОшибка сканирования сканера

import java.util.ArrayList; 
import java.io.File; 
import java.util.Random; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class GestoreLotteria { 
    public static ArrayList<Utente> listaUtenti = new ArrayList<>(); 
    public static Random rnd = new Random(); 

    public static void inserisciUtenti() throws FileNotFoundException{ 
     Scanner scnr = new Scanner(new File("utenti.txt")); 
     while (scnr.hasNextLine()){ 
      String nome = scnr.next(); 
      String cognome = scnr.next(); 
      String city = scnr.next(); 
      int giorno = rnd.nextInt(28); 
      int mese = rnd.nextInt(12); 
      int anno = 1996 - rnd.nextInt(72); 
      String eta = giorno + " " + mese + " " + anno; 
      Utente utente = new Utente(nome, cognome, city, eta); 
      listaUtenti.add(utente); 
     } 
    } 


    public static void main(String[] args) throws FileNotFoundException{ 
     inserisciUtenti(); 
     System.out.print(listaUtenti); 
    } 
} 

ошибка это

~/Desktop/TestEsameLPI/lotteri> java GestoreLotteria 
Exception in thread "main" java.util.NoSuchElementException 
    at java.util.Scanner.throwFor(Scanner.java:907) 
    at java.util.Scanner.next(Scanner.java:1416) 
    at GestoreLotteria.inserisciUtenti(GestoreLotteria.java:14) 
    at GestoreLotteria.main(GestoreLotteria.java:28) 

здесь класс utente.java

public class Utente { 
    public String nome; 
    public String cognome; 
    public String city; 
    public String eta; 

    public Utente(String nome, String cognome, String city, String eta) { 
      this.nome = nome; 
      this.cognome = cognome; 
      this.city = city; 
      this.eta = eta; 
    } 

    public String getNome(){ 
     return nome; 
    } 

    public String getCognome(){ 
     return cognome; 
    } 

    public String getCity(){ 
     return city; 
    } 

    public String getEta(){ 
     return eta; 
    } 
} 
+0

Что вы имеете в виду, когда говорите, что он не распознает сканер? Вы видите ошибку компилятора? Исключение во время выполнения? Неожиданное поведение? Что-то другое? –

+1

'FileNotFoundException' - это проверенное исключение, поэтому его необходимо явно выбросить (или поймать) – Reimeus

ответ

-1

Вы должны обрабатывать все исключений ", которые могут быть выброшены" во время выполнения вашей программы .. В вашем случае компилятор Java кричит - "ВАШ КОДЕКС МОЖЕТ БЫТЬ ПРОФЕССИОНАЛЬНЫМ ИСПОЛЬЗОВАНИЕМ FILENOTFOUNDEXCEPTION, ТАК ОБРАЩАЙТЕ ЭТО ПОСЕТИТЬ ПЕРИОД" Итак, у вас есть 2 варианта ...

1. Say that your method "throws" FileNotFoundEception by adding it to the method's signature.. 
        OR 
2. put a "try-catch" block around the code which might throw this exception.. 
+0

спасибо, добавил, но он продолжает давать мне ошибку. – user3190369

+0

@ user3190369 - сканер может не получить следующий элемент правильно .. вы уверены, что файл имеет правильные элементы ??. Кстати, где вы определили - «Utente»? – TheLostMind

+0

Я сделал класс utente – user3190369

0

Измените ваш вопрос. Это не ошибка времени компиляции. U может ли существовать scnr.next() перед назначением этой переменной.

public static void inserisciUtenti() throws FileNotFoundException{ 
     Scanner scnr = new Scanner(new File("testfile.txt")); 
     String nome = ""; 
     String cognome = ""; 
     String city = ""; 


     while (scnr.hasNextLine()){ 
      if(scnr.hasNext()) 
       nome = scnr.next().toString(); 
      if(scnr.hasNext()) 
      cognome = scnr.next().toString(); 
      if(scnr.hasNext()) 
      city = scnr.next().toString(); 
      int giorno = rnd.nextInt(28); 
      int mese = rnd.nextInt(12); 
      int anno = 1996 - rnd.nextInt(72);`enter code here` 
      String eta = giorno + " " + mese + " " + anno; 
      Utente utente = new Utente(nome, cognome, city, eta); 
      listaUtenti.add(utente); 
      } 
    } 
+0

Я сделал то, что вы предлагаете мне, теперь, когда я запускаю его он не смотрит ничего ... – user3190369

+0

Не могли бы вы попытаться добавить утверждения печати. Пожалуйста, поделитесь своим файлом и –

0

Разве ваш файл «utenti.txt» не начинается с пустой строки? Если это так, то сразу после этого испытания

while (scnr.hasNextLine()) { 

единственное, что вы знаете, что есть линия в файле, так что следующая команда

String nome = scnr.next(); 

не в состоянии получите String и получите NoSuchElementException, что и вы.

Как правило, перед вызовом String whatever = scnr.next() вы должны проверить, используя scnr.hasNext() вместо scnr.hasNextLine().

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