2013-11-20 3 views
0

У меня есть программа, которая читает два файла ("incompleta.txt" и "completa.txt") и сравнивает, есть ли одинаковые имена в обоих файлах. Вот как это работает:Странный файл результата

  1. В нем хранятся все имена из "completa.txt" в ArrayList;
  2. Прочтите файл «incompleta.txt» и сравните каждую строку с ArrayList, если совпадают, а затем удалите запись из ArrayList;
  3. Напишите ArrayList в текстовом файле ("lista.txt").

Проблема заключается в том, что мой «lista.txt» выглядит следующим образом: Image

Вторая линия все запутанная и искажаются.

Мой Java Код:

private static final List<Character> lista = new ArrayList<>(); 

public static void main(String[] args) throws FileNotFoundException, IOException { 
    try (Reader reader = new InputStreamReader(new FileInputStream("completa.txt"), "UTF-8")) { 
     int data = reader.read(); 
     while (data != -1) { 
      char theChar = (char) data; 
      data = reader.read(); 
      lista.add(theChar); 
     } 

     reader.close(); 
    } 

    try (Reader reader = new InputStreamReader(new FileInputStream("incompleta.txt"), "UTF-8")) { 
     int data = reader.read(); 
     while (data != -1) { 
      char theChar = (char) data; 
      data = reader.read(); 

      if (lista.contains(theChar)) { 
       lista.remove(theChar); 
      } 
     } 

     reader.close(); 
    } 

    try (Writer writer = new OutputStreamWriter(new FileOutputStream("lista.txt"), "UTF-8")) { 
     for (int i = 0; i < lista.size(); i++) { 
      writer.append(lista.get(i)); 
     } 

     writer.close(); 
    } 

    System.out.println("\n[AVISO] LISTA GERADA COM SUCESSO!\n"); 
} 
+0

Какая странная часть об этом изображении? Первые строки? Где вы получаете эти данные? –

+0

Каковы ваши входные файлы? – Christian

+0

Извините, здесь: completa.txt = http://pastebin.com/B1ApuHc1 && incompleta.txt = http://pastebin.com/MLZ3gJe1 – JChris

ответ

1

Что у вас есть список персонажей, построенный из первого файла. Не список строк.

Затем вы идете и удаляете отдельные символы, основываясь на втором файле. Это оставляет некоторые забавные слова позади; вы получаете письма. Затем в конце вы распечатаете все это. Ваш результат - именно то, что я ожидаю.

+0

Спасибо всем вам, ребята, как решить проблему (моя проблема, по крайней мере): Просто измените тип ArrayList на String и замените строку char theChar = (char); to String myData = Character.toString ((char)); – JChris

0

Функция автобокса не является симметричной. Добавление 'd' заверяется в объект Character. С удалением нет автобокса. remove ('d') изменяется для удаления (100). Поместить объект в удалить (новый символ ('d'))

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