2014-03-31 8 views
-1

// Проблема в том, что он продолжает говорить 0 для строк и слов. Тем не менее, это подсчет персонажей. И я не совсем уверен, как добавить FileNotFoundException. Мой учитель даже не преподавал нашему классу. Каждый в моем классе борется :(Подсчет строк слов символов и filenotfound исключение java eclipse.

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

public class FileReader 
{ 
public static void main(String[]args) throws FileNotFoundException   
{ 
     Scanner console = new Scanner(System.in);   

     System.out.println("File to be read: "); 
     String inputFile = console.next(); 

     File file = new File(inputFile); 
     Scanner in = new Scanner(file); 

     int words = 0; 
     int lines = 0; 
     int chars = 0; 

     in = new Scanner(file); 
     while(in.hasNext()) 
     { 
      in.next(); 
      chars++; 
     } 
     in = new Scanner(file); 
     while(in.hasNextLine()) 
     { 
      in.nextLine(); 
      lines++; 
     } 
     in = new Scanner(file); 
     while(in.hasNextByte()) 
     { 
      in.nextByte(); 
      words++; 
     } 

     System.out.println("Number of lines: " + lines); 
     System.out.println("Number of characters: " + chars); 
     System.out.println("Number of words: " + words); 
} 
} 
+0

Что вы подразумеваете под добавлением filenotfoundexception? добавить в предложение try-catch? – Sikorski

+0

Да, вот что я имел в виду извинение – user3174207

+0

Мы не будем делать домашнее задание! – cheseaux

ответ

0

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

вы получаете, что FileNotFoundException, потому что вы не указываете полный путь к файлу. File f = new File(complete/path/of/file);

console.next() даст вам только текст вы вводите консоль, но не весь путь.

Я предлагаю вам создать строку с полным путем и передать ее в File().

Я думаю, что это объяснение слишком много для домашней работы;)

Надеется, что это помогает.

0

В первом цикле while вы фактически подсчитываете количество слов, но назначаете его символам. Количество символов легко подсчитывается по длине каждого слова в этом цикле.

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

public class FileReader { 
    public static void main(String[] args) throws FileNotFoundException { 
     Scanner console = new Scanner(System.in); 

     System.out.println("File to be read: "); 
     String inputFile = console.next(); 

     File file = new File(inputFile); 
     Scanner in = new Scanner(file); 

     int words = 0; 
     int lines = 0; 
     int chars = 0; 

     in = new Scanner(file); 
     while (in.hasNext()) { 
      chars += in.next().length(); 
      words++; 
     } 
     in = new Scanner(file); 
     while (in.hasNextLine()) { 
      in.nextLine(); 
      lines++; 
     } 

     /* 
     * in = new Scanner(file); while(in.hasNextByte()) { in.nextByte(); 
     * words++; } 
     */ 

     System.out.println("Number of lines: " + lines); 
     System.out.println("Number of characters: " + chars); 
     System.out.println("Number of words: " + words); 
    } 
} 
+0

Я пробовал свой код прямо сейчас, и когда я ввел пустой файл, он читал 5 строк, 135 символов, 5 слов. Однако я не могу понять, почему. – user3174207

+0

Я протестировал с пустым файлом, и вывод в порядке. –

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