2015-04-19 4 views
3

Как сохранить строку «Нет дубликатов», чтобы повторить запись, а не только получить ее в конце и как напечатать номер строки файл, который я прочитал в своей программе?Получение печати для печати только один раз и печати номера строки файла

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

public class b{ 
    public static void main(String args[]) throws Exception{ 
     Scanner infile = new Scanner(new File(args[0])); 
     HashSet<String> h = new HashSet<String>(); 

     while(infile.hasNext()){ 
      String word = infile.next(); 
      if(h.contains(word)){ 
       System.out.println("DUPLICATE at line" + " " + ); 
      }else if(!h.contains(word)){ 
       System.out.println("No Duplicate Found"); 
      }else{ 
       h.add(word); 
      } 
     } 
    } 
} 
+0

Отступа ваш код правильно, это должно помочь решить все проблемы, связанные с неправильно вложенными циклами. –

ответ

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

public class b{ 
    public static void main(String args[]) throws Exception{ 
     Scanner infile = new Scanner(new File(args[0])); 
     HashSet<String> h = new HashSet<String>(); 
     boolean noDuplicateFound; 
     lineCount = 0; 

     while(infile.hasNextLine()){ 
      lineCount++ 
      String word = infile.next(); 
      h.add(word); 
      if(h.contains(word)){ 
       System.out.println("DUPLICATE at line: " + lineCount); 
      }else if(!h.contains(word)){ 
       noDuplicateFound = true; 
      } 
     } 
     if(noDuplicateFound) 
      System.out.println("No Duplicate Found"); 
    } 
} 
+0

Когда я запускаю это в своем файле, он сообщает мне «Нет дубликатов», когда я знаю, что есть дубликат – and129

+0

. измените if (duplicateFound) на if (noDuplicateFound) – Shifty

+0

Я не понял, но вся ваша логика ошибочна. Позвольте мне исправить это для вас. – Shifty