Друзья мои, есть следущий код, имеются два одинаковых слова (String), я взял слово "файл" из List words и просто методом Ctrl + c, Ctrl + v скопировал его в файл. В итоге, при выводе в консоль на первой инерации цикла 1, в консоль выводятся две одинаковые строки, но у них совершенно разный размер и соответсвенно, при сравнении этих строк, equals() выдает false, если я возьму и перенесу слово файл на вторую позицию проверяемой строки, то на второй итерации все будет хорошо и equals выдаст true! Также при проверке строки "файл вид Антон Горшок Уаз" a[0].equals("файл") = false, а c.get(0).equals("файл") = true. Вопрос что не так с a[0] ? Частичный результат работы программы представлен ниже! Проверяемая строка : "вид файл Антон Горшок Уаз" Вывод для первой и второй итерации цикла 1. вид = файл a[i].equals(c) = false i = 0 a[i].length() = 4 c.length() = 4 // начало первой итерации вид = вид a[i].equals(c) = false i = 0 a[i].length() = 4 c.length() = 3 вид = В a[i].equals(c) = false i = 0 a[i].length() = 4 c.length() = 1 файл = файл a[i].equals(c) = true i = 1 a[i].length() = 4 c.length() = 4 // начало второй итерации файл = вид a[i].equals(c) = false i = 1 a[i].length() = 4 c.length() = 3 файл = В a[i].equals(c) = false i = 1 a[i].length() = 4 c.length() = 1 Проверяемая строка : "файл вид Антон Горшок Уаз" Вывод для первой и второй итерации цикла 1. файл = файл a[i].equals(c) = false i = 0 a[i].length() = 5 c.length() = 4 // начало первой итерации файл = вид a[i].equals(c) = false i = 0 a[i].length() = 5 c.length() = 3 файл = В a[i].equals(c) = false i = 0 a[i].length() = 5 c.length() = 1 вид = файл a[i].equals(c) = false i = 1 a[i].length() = 3 c.length() = 4 // начало второй итерации вид = вид a[i].equals(c) = true i = 1 a[i].length() = 3 c.length() = 3 вид = В a[i].equals(c) = false i = 1 a[i].length() = 3 c.length() = 1
package com.javarush.task.task19.task1922;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/*
Ищем нужные строки
*/

public class Solution {
    public static List<String> words = new ArrayList<String>();

    static {
        words.add("файл");
        words.add("вид");
        words.add("В");
    }

    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedReader file = new BufferedReader(new FileReader("D:\\1.txt"));
        while (file.ready()) {
            String[] a = file.readLine().split(" ");
            int s = 0;
            for (int i = 0; i<a.length; i++) {   // цикл 1
                for (String c : words) {   // цикл 2
                    System.out.println(a[i] +" = " + c + " " + a[i].equals(c) + " " + i +  " " + a[i].length() + " " + c.length()); // строка проверки
                    if (a[i].equals(c)) {
                        s++;
                    }
                }
            }
        }
    }
}
P.S. сори за большой текст, хотелось подробно изложить проблему, так как googling не помог, да и проблема какая-то совсем странная. Либо я в упор не вижу глупой ошибки, либо чего-то не знаю о работе String.split().