Erros idiotas ao criar arquivos

Olá, cá estou mais uma vez com um programa cheio de erros na boa esperança de que algum gênio santo do Java me ajude.

Devo criar um programa que leia dois arquivos diferentes e que, com informações obtidas nesses arquivos, crie um outro.

Só que cada vez que mando compilar essa coisa chata dá um erro diferente!!! :x
Tento usar métodos como .trim() e por aí vai, mas n sei porque o BlueJ tá invocando comigo!
alguém pode me salvar? aqui vai o código:

[code]import java.io.;
import java.util.
;
class M0515663T06 {
public static void main (String [] args) throws IOException {

BufferedReader arqnomes = new BufferedReader(new FileReader 
("C:\Documents and Settings\Carolina\Meus documentos\UnB\2 de 2007\Computação Básica\programas\T06\alunos.nomes.txt"));
BufferedReader arqmatr = new BufferedReader(new FileReader 
("C:\Documents and Settings\Carolina\Meus documentos\UnB\2 de 2007\Computação Básica\programas\T06\alunos.matriculas.txt"));
FileWriter arqsenha = new FileWriter("alunos.senhas");
String linha, nome, matr, inimatr, fimmatr, ininome, fimnome, nomesenha;
String senhamatr1, senhamatr2;
int compnome, compnome1, compmatr, matri, pr2matr, ult4matr, senhamatr, compsenhamatr;
while ((nome = arqnomes.readLine()) != null){
    while ((matr = arqmatr.readLine()) != null){
    compnome = nome.length();
    compnome1 = compnome - 3;
    compmatr = matr.length();
    compmatr = compmatr - 4;
    nome = nome.trim();
    //ininome = ininome.trim();
    //fimnome = fimnome.trim();
    matr = matr.trim();
    //inimatr = inimatr.trim();
    //fimmatr = fimmatr.trim();
    //ininome = ininome.trim();
    inimatr = matr.substring(0,3);
    fimmatr = matr.substring(compmatr);
    ininome = nome.substring (0,3);
    fimnome = nome.substring (compnome1);
    nome = nome.toLowerCase();
    fimnome = fimnome.toLowerCase();
    ininome = ininome.toLowerCase();
    pr2matr = Integer.parseInt(inimatr);
    ult4matr = Integer.parseInt(fimmatr);
    senhamatr = ult4matr/pr2matr;
    //senhamatr = Integer.toString(senhamatr);
    //senhaaluno = nomesenha + senhamatr;
    nomesenha = fimnome + ininome;
  if(senhamatr >= 1000)
     System.out.println(nomesenha+senhamatr);
  if((senhamatr < 1000) && (senhamatr >= 100))
     System.out.println(nomesenha+"0"+senhamatr);
  if((senhamatr < 100) && (senhamatr >= 10))     
    System.out.println(nomesenha+"00"+senhamatr);
  if((senhamatr < 10) && (senhamatr >= 1))     
    System.out.println(nomesenha+"000"+senhamatr);
  if((senhamatr < 1) && (senhamatr <= 0))
    System.out.println(nomesenha+"0000");
        break;
        }

}
arqsenha.write(nomesenha);
arqsenha.write(senhamatr);

arqnomes.close();
arqmatr.close();
arqsenha.close();
}
}
[/code]

OBRIGADA ^^

ps: pra que o programa rode, ele precisa de dois arquivos de texto: um com nomes fíctícios de alunos, e outros com suas matrículas de no mínimo 7 números.

Olá carolzinha,

Tente ser mais específica com seu problema, assim será mais fácil para o pessoal te ajudar!

Olhando rapidamente seu código, percebo que ele não compilará por você não estar iniciando as suas variáveis locais antes de usá-las.

Veja bem, as variáveis locais no Java precisam ser inicializadas (receber algum valor) antes de poderem ser utilizadas. Se você perceber no seu código em:

arqsenha.write(nomesenha); arqsenha.write(senhamatr);

Veja que se a condição:

while ((nome = arqnomes.readLine()) != null){

Não for satisfeita, então essas variáveis “nomesenha” e “senhamatr” não serão inicializadas e então você não poderá utilizá-las. Para resolver este problema é só você as iniciar na declaração.

A variável String pode ser inicializada com null, mas a variável int (primitiva) não aceita null, então inicialize-a com -1 por exemplo.

Se este não for ainda o seu problema tente ser mais específica como te falei.

Abraços.