Comparação vetores e arquivo txt

Pessoal é o seguinte, eu tenho um projeto para uma disciplina em que tenho que comparar um vetor de entrada do usuário com um vetor que está em um arquivo .txt. Esse vetor que o usuário insere é de Strings e tenho que comparar as entradas dele com algumas posições do vetor que está num .txt, esse vetor de entrada são as disciplinas já cursadas na faculdade, e a partir delas tenho que ver se as disciplinas cursadas são requisitos das disciplinas que vem depois e mostrar ao usuario quais disciplinas ele pode fazer por ter cursado as disciplinas anteriores, aqui vai um exemplo:

[code]package arquivosdisciplinas;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class ArquivosDisciplinas {

static String[] Energia = new String[4];
static String[] Representacao_e_Simulacao = new String[6];
static String[] Estrutura_da_Materia = new String[4];
static String[] Processos_de_Transformacao = new String[4];
static String[] Informacao_e_Comunicacao = new String[4];
static String[] Humanidades = new String[3];
static String[] Projeto = new String[1];
static String[] Sem_Requisito = new String[7];


static void leitura(String nomeArq) {
    try {// tenta ler o arquivo
        FileReader ent = new FileReader(nomeArq); // associa variável ao arquivo
        BufferedReader br = new BufferedReader(ent);// abre arquivo para leitura
        String linha;
        String[] campos = null;
        System.out.println("===Disciplinas do Eixo de Energia: ===");
        while ((linha = br.readLine()) != null) {
            campos = linha.split(":");//quebra dados separados por ":"
            String Energia = campos[0];
            int creditos = Integer.parseInt(campos[1]);
            String req1 = campos[2];
            String req2 = campos[3];
            String req3 = campos[4];
            System.out.print(Energia + " " + creditos + " créditos \n");
        }
        br.close();//fecha o arquivo
    } catch (IOException erro) {//não conseguiu ler o arquivo
        System.out.println("Erro na leitura do arquivo!");
    }
}


static void leitura2(String nomeArq) {
    try {// tenta ler o arquivo
        FileReader ent = new FileReader(nomeArq); // associa variável ao arquivo
        BufferedReader br = new BufferedReader(ent);// abre arquivo para leitura
        String linha;
        String[] campos = null;
        System.out.println("\n===Disciplinas de Representacao e Simulacao: ===");
        while ((linha = br.readLine()) != null) {
            campos = linha.split(":");//quebra dados separados por ":"
            String Representacao_e_Simulacao = campos[0];
            int creditos = Integer.parseInt(campos[1]);
            String req1 = campos[2];
            String req2 = campos[3];
            System.out.print(Representacao_e_Simulacao + " " + creditos + " créditos \n");
        }
        br.close();//fecha o arquivo
    } catch (IOException erro) {//não conseguiu ler o arquivo
        System.out.println("Erro na leitura do arquivo!");
    }
}

static void leitura3(String nomeArq) {
    try {// tenta ler o arquivo
        FileReader ent = new FileReader(nomeArq); // associa variável ao arquivo
        BufferedReader br = new BufferedReader(ent);// abre arquivo para leitura
        String linha;
        String[] campos = null;
        System.out.println("\n===Disciplinas de Estrutura da Matéria: ===");
        while ((linha = br.readLine()) != null) {
            campos = linha.split(":");//quebra dados separados por ":"
            String Estrutura_da_Materia = campos[0];
            int creditos = Integer.parseInt(campos[1]);
            String req1 = campos[2];
            String req2 = campos[3];
            System.out.print(Estrutura_da_Materia + " " + creditos + " créditos \n");
        }
        br.close();//fecha o arquivo
    } catch (IOException erro) {//não conseguiu ler o arquivo
        System.out.println("Erro na leitura do arquivo!");
    }
}

static void leitura4(String nomeArq) {
    try {// tenta ler o arquivo
        FileReader ent = new FileReader(nomeArq); // associa variável ao arquivo
        BufferedReader br = new BufferedReader(ent);// abre arquivo para leitura
        String linha;
        String[] campos = null;
        System.out.println("\n===Disciplinas de Processo de Transformações: ===");
        while ((linha = br.readLine()) != null) {
            campos = linha.split(":");//quebra dados separados por ":"
            String Processos_de_Transformacao = campos[0];
            int creditos = Integer.parseInt(campos[1]);
            String req1 = campos[2];
            System.out.print(Processos_de_Transformacao + " " + creditos + " créditos \n");
        }
        br.close();//fecha o arquivo
    } catch (IOException erro) {//não conseguiu ler o arquivo
        System.out.println("Erro na leitura do arquivo!");
    }
}

static void leitura5(String nomeArq) {
    try {// tenta ler o arquivo
        FileReader ent = new FileReader(nomeArq); // associa variável ao arquivo
        BufferedReader br = new BufferedReader(ent);// abre arquivo para leitura
        String linha;
        String[] campos = null;
        System.out.println("\n===Disciplinas de Informação e Comunicação: ===");
        while ((linha = br.readLine()) != null) {
            campos = linha.split(":");//quebra dados separados por ":"
            String Informacao_e_Comunicacao = campos[0];
            int creditos = Integer.parseInt(campos[1]);
            String req1 = campos[2];
            System.out.print(Informacao_e_Comunicacao + " " + creditos + " créditos \n");
        }
        br.close();//fecha o arquivo
    } catch (IOException erro) {//não conseguiu ler o arquivo
        System.out.println("Erro na leitura do arquivo!");
    }
}

static void leitura6(String nomeArq) {
    try {// tenta ler o arquivo
        FileReader ent = new FileReader(nomeArq); // associa variável ao arquivo
        BufferedReader br = new BufferedReader(ent);// abre arquivo para leitura
        String linha;
        String[] campos = null;
        System.out.println("\n===Disciplinas de Humanidades: ===");
        while ((linha = br.readLine()) != null) {
            campos = linha.split(":");//quebra dados separados por ":"
            String Humanidades = campos[0];
            int creditos = Integer.parseInt(campos[1]);
            String requisitos = campos[2];
            System.out.print(Humanidades + " " + creditos + " créditos \n");
        }
        br.close();//fecha o arquivo
    } catch (IOException erro) {//não conseguiu ler o arquivo
        System.out.println("Erro na leitura do arquivo!");
    }
}

static void leitura7(String nomeArq) {
    try {// tenta ler o arquivo
        FileReader ent = new FileReader(nomeArq); // associa variável ao arquivo
        BufferedReader br = new BufferedReader(ent);// abre arquivo para leitura
        String linha;
        String[] campos = null;
        System.out.println("\n===Disciplina de Projeto: ===");
        while ((linha = br.readLine()) != null) {
            campos = linha.split(":");//quebra dados separados por ":"
            String Projeto = campos[0];
            int creditos = Integer.parseInt(campos[1]);
            System.out.print(Projeto + " " + creditos + " créditos \n");
        }
        br.close();//fecha o arquivo
    } catch (IOException erro) {//não conseguiu ler o arquivo
        System.out.println("Erro na leitura do arquivo!");
    }
}

static void leitura8(String nomeArq) {
    try {// tenta ler o arquivo
        FileReader ent = new FileReader(nomeArq); // associa variável ao arquivo
        BufferedReader br = new BufferedReader(ent);// abre arquivo para leitura
        String linha;
        String[] campos = null;
        System.out.println("\n===Disciplinas sem requisitos: ===");
        while ((linha = br.readLine()) != null) {
            campos = linha.split(":");//quebra dados separados por ":"
            String Sem_Requisito = campos[0];
            int creditos = Integer.parseInt(campos[1]);
            System.out.print(Sem_Requisito + " " + creditos + " créditos \n");
        }
        br.close();//fecha o arquivo
    } catch (IOException erro) {//não conseguiu ler o arquivo
        System.out.println("Erro na leitura do arquivo!");
    }
}

public static void main(String[] args) {
    
    leitura("Energia.txt");
    leitura2("Representacao_e_Simulacao.txt");
    leitura3("Estrutura_da_Materia.txt");
    leitura4("Processos_de_Transformacao.txt");
    leitura5("Informacao_e_Comunicacao.txt");
    leitura6("Humanidades.txt");
    leitura7("Projeto.txt");
    leitura8("Sem_Requisito.txt");
}

}

[/code]

esse é meu código, e por exemplo, um dos arquivos .txt tem essa estrutura:

BC0003 (BM):4:SEM:SEM BC0402 (FUV):4:BC0003:SEM BC0404 (GA):3:BC0003:SEM BC0407 (FVV):4:BC0402:BC0404 BC0405 (IEDO):4:BC0407:SEM BC0406 (IPE):3:BC0402:SEM

então o que eu quero fazer é comparar um vetor que vou pedir ao usuário e se ele tiver feito, por exemplo, BC0003 mostrar pra ele que ele pode fazer BC0402 e BC0404. Valeu.