2016-10-26 1 views
2

Прежде всего, позвольте мне предисловие: я пишу программу, которая позволила бы мне взять три файла, каждый из которых содержал бы другой перевод отрывка из Библии и вычислял число слов, строк и символов. Моя проблема заключается в том, что первая строка файла содержит только версию конкретного перевода (т. Е. KJV). Я хочу, чтобы он начал работать, а также пропустив первую строку файла.Нужно только читать со второй строки вниз

До сих пор, что я для моего кода заключается в следующем:

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

public class Assign6 
{ 
    public static void main(String[]args) throws Exception{ 

     int wordCount = 0; 
     int lineCount = 0; 
     int charCount = 0; 
     java.io.File file1 = new java.io.File("translation1.txt"); 
     java.io.File file2 = new java.io.File("translation2.txt"); 
     java.io.File file3 = new java.io.File("translation3.txt"); 
     java.io.PrintWriter file4 = new java.io.PrintWriter("CompareInfo.txt"); 
     Scanner input = new Scanner(file1); 
     Scanner input2 = new Scanner(file2); 
     Scanner input3 = new Scanner(file3); 


     while(input.hasNextLine()){ 

       String line = input.nextLine(); 

       lineCount++; 

       String str[] = line.split((" ")); 
         for(int i = 0; i <str.length; i++){ 
          wordCount++; 
         } 
         charCount += (line.length()); 

       } 
       file4.println("In the King James, there are " + lineCount + " Lines, " + wordCount + " Words, and " + charCount + " Characters."); 
       lineCount = 0; 
       charCount = 0; 
       wordCount = 0; 

       while(input2.hasNextLine()){ 

       String line = input2.nextLine(); 

       lineCount++; 

       String str[] = line.split((" ")); 
         for(int i = 0; i <str.length; i++){ 
          wordCount++; 
         } 
         charCount += (line.length()); 

       } 
       file4.println("In the NIV, there are " + lineCount + " Lines, " + wordCount + " Words, and " + charCount + " Characters."); 

       lineCount = 0; 
       wordCount = 0; 
       charCount = 0; 

       while(input3.hasNextLine()){ 

       String line = input3.nextLine(); 

       lineCount++; 

       String str[] = line.split((" ")); 
         for(int i = 0; i <str.length; i++){ 
          wordCount++; 
         } 
         charCount += (line.length()); 

       } 
       file4.println("In the Message, there are " + lineCount + " Lines, " + wordCount + " Words, and " + charCount + " Characters."); 

    file4.close(); 
    System.out.println("File written.");  
    } 
}  

Как вы думаете, если заявление будет работать там, где я просто увеличиваем его один раз, если это первая строка текстового файла и, если так как именно я буду заниматься этим?

+2

Добавьте 'input.nextLine();' перед вашим циклом. Чтобы быть в безопасности, убедитесь, что сначала есть линия. –

+0

просто вызовите input.nextLine(), прежде чем цикл while должен работать – arop

ответ

0

Прочитайте одну строку один раз, прежде чем переходить через другие линии? Нравится:

Scanner input = new Scanner(file1); 
Scanner input2 = new Scanner(file2); 
Scanner input3 = new Scanner(file3); 

input.nextLine(); 
input2.nextLine(); 
input3.nextLine(); 

while(input.hasNextLine()){ 
//etc 

Поэтому он просто пропускает их, потому что читатель уже прочитал его один раз.

+0

ну, это было определенно полезно, чтобы вернуть меня на правильный трек, но я немного поиграл с ним, и это не было hasNextLine, в котором я нуждался, но Мне просто нужно пропустить первую строку, используя input.nextLine(); –

+0

@JacobPorter Правильно, я написал этот ответ прямо перед сном, поэтому я совершил критическую ошибку. Редактировал его сейчас. – Voltboyy

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