2015-10-18 3 views
0

В моей проблеме у меня есть случай, когда я хочу удалить элемент после указанного мной слова. Вот мой код, где я удаляю сам элемент, но как бы удалить элемент после этого. Его бит сложный, потому что у меня есть цикл while, внутри которого читается из файла все входные данные. Затем он сохраняет это в списке массивов с именами.Arraylist java удалить следующий элемент

File file1 = new File(args[0]); 
     File file2 = new File(args[1]); 
     Scanner input = new Scanner (file1); 
     while (input.hasNext()) 
     { 
      String word = input.next(); 
      words.add(word); 
      if(word.contains("e")){ 
       words.remove(word); 
      } 
     } 

Выход: [Тест, 1, 3, 3, -1, -2, 3, испытания, 2, 1, 2, 1, -1, тест, 3, 5, 8, 5, -4, -2, 1, 3, -2, -5, 1, 4, -4, -2, -3, -3, 4, 5, 1, -2, 5, 3, -2, 5, 2, 3, -4, Test, 4, 3, 5, 1, 2, 3, 2, -3, 1, -2, -1, -3, -2, 3, -1] Я хочу удалить следующий элемент после теста в любом месте и сам тест.

+1

Это, вероятно, будет более эффективным, чтобы добавить элемент в список только после того, как вы проверили, если он должен быть добавлен в первое место. –

+0

Итак, посмотрите, является ли слово «Test», а затем, если оно не добавляет его, а также читайте nextLine и ничего не делайте с ним. – 3kings

+0

Yup, где я ошибся. Поймите это теперь спасибо всем! – Anon

ответ

0
File file1 = new File(args[0]); 
    File file2 = new File(args[1]); 
    Scanner input = new Scanner (file1); 
    while (input.hasNext()) 
    { 
     String word = input.next(); 
     if(!word.contains("e")) 
      words.add(word); 
     else 
      input.next(); 
    } 

Так что-то вроде этого? Он проверит, содержит ли слово кулак e, и если он его не добавит в список. Но если он это сделает, он не добавит его, и он также просто прочитает следующий ввод и ничего не сделает с ним.

+0

Да, это то, что я ищу. Это делает много смысла – Anon

+0

@JayPatel Нет проблем – 3kings

0

Возможно синтаксические проблемы, но вот то, что я хотел бы сделать, предупреждение: psudocode

var inputArray = input.split(','); 
var removeValue = 0; 

//itterate through array delimited by commas 
for (i = 0; i < inputArray.count(); i++) 
{ 
    //if flagged for removal, remove 
    if (removeValue = 1) 
     inputArray.removeAt(i); 

    //flag next value for removal or not 
    if (inputArray[i] == 'test') 
     removeValue = 1; 
    else 
     removeValue = 0; 
} 
+0

Да, я вижу, где вы в этом случае, но мне нужно сначала получить входной файл, чтобы он не работал. работает, если у меня есть все мои элементы – Anon

+0

, сделайте выше функцию, которая возвращает строку и вызывает ее при чтении файла. – Eliseo

+0

Yup Я понимаю, что вы сказали. Это тоже сработает. Я использовал вышеописанный метод, но спасибо за помощь – Anon

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