2012-03-08 3 views
-1
private Scanner inputFile; 
private String corpusFileString = ""; 
try 
{ 
    File file = new File(sourceFile.getText()); 
    inputFile = new Scanner(file); 
    JOptionPane.showMessageDialog(null, "The file was found."); 
    if (text != null) 
    { 
     translate.setEnabled(true); 
    } 
} 
catch (FileNotFoundException ex) 
{ 
    JOptionPane.showMessageDialog(null, "The file was not found."); 
} 

try 
{ 
    numberWords = inputFile.nextInt(); 
} 
catch (InputMismatchException ex) 
{ 
    JOptionPane.showMessageDialog(null, "The first line on the file must be an integer"); 
} 

while (inputFile.hasNext()) 
{ 
    corpusFileString = corpusFileString + inputFile.nextLine() + " "; 
} 

Поэтому, когда я читаю этот файл, первая строка должна быть целым числом (другая переменная будет содержать это) или она выдает исключение. Остальная часть файла должна быть данными (другая переменная для всех данных), но по какой-то причине String содержит пустое пространство в начале, а когда я его разделяю, я должен использовать +1 в моей причине массива этого пустого пространства.Пустой пробел при чтении файла java

+3

Это больше похоже на Java, чем C#. – jrummell

+0

Это, похоже, не является соответствующей частью кода. Покажите нам код класса «Сканер». –

+0

@ OlivierJacot-Descombes Scanner - это встроенный Java-класс. http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html –

ответ

0

Проблема в том, что он считывает первый int, а затем остальную часть первой строки.

В основном:

15 \ п линия здесь \ п другая линия здесь

Где \ п является символ новой строки.

Он читает 15, затем он читает \ n, что означает "" (исключая символ новой строки). В остальном он читается так, как вы ожидали.

Попробуйте использовать:

numberWords = Integer.parseInt(inputFile.nextLine()); 

Вместо

numberWords = inputFile.nextInt(); 
0

Я не уверен, о Java. Возможно, вам нужно позвонить hasNext(), прежде чем пытаться читать с nextInt(). Так работают читатели и счетчики .NET. В C# я бы написать что-то вроде

while (reader.MoveNext()) { 
    string s = reader.Current; 
} 

В вашем случае вы можете попробовать

if (inputFile.hasNext()) { 
    numberWords = inputFile.nextInt(); 
} 
Смежные вопросы