Preciso muito de ajuda!

Olá a todos, sou português por isso se alguma palavra que levem a mal, não é de proposito mas sim porque não conheço todas as pessoas brasileiras e não sei se estou a ofender alguém se não…ou precisava da ajuda pois tenho um trabalho para entregar sobre ficheiro de texto e está a dar um erro no programa, o programa serve para adicionar um animal e pergunta várias coisas a cerca do animal e no final diz se é mamifero/peixe/reptil ect o problema é no listar, não consiguo fazer uma lista de todos os animal…mas onde posso meter o código para me ajudarem melhor,

obrigado pela atenção por favor ajudem! :SS

Opa!
Posta o código.

coloque ele entre as tags [ code][ /code] ** Sem espaços

import java.io.;
import java.util.
;
public class TrabalhoVertebrados {

 FicheiroDeTexto f=new FicheiroDeTexto();

public static void main (String args[])throws IOException {
    

     Scanner myScanner=new Scanner(System.in);
    FicheiroDeTexto f=new FicheiroDeTexto();
   
String nomeDoFicheiro=" ";//variavel que vai dar o nome ao fcheiro de texto        
String escolher=" ";//ao longo do programa esta variavel irá ser precisa para fazer as perguntas ao utilizador
String servivo=" ";//variavel que vai guardar o nome do ser vivo(cao, gato, salmão, cobra)
int iniciarSwitch=0;
        //System.out.println("################################");

do{

    System.out.println("1 ? Adicionar Ser vivo");
System.out.println("2 ? Listar Ser Vivo//Opção que permite ver todos os animais que foram adicionados.");
System.out.println("3 ? Exit");

    iniciarSwitch=myScanner.nextInt();
    
    
 
      switch (iniciarSwitch){
      
      case 1:
                System.out.println("***Insira o nome do Ser Vivo***");
                servivo=myScanner.next();//quando o programa é executado inserimos um nome de um animal que vai ser guardado aqui.
       
 


                
System.out.println(servivo+ " é protegido por escamas? s/n");
escolher=myScanner.next();
   


      if("s".equals(escolher)){//se a resposta de "é protegido por escamas" for "s" faz uma nova pergunta 
      System.out.println(servivo+ " tem respiração branquial, escamas de origem dérmica, membros em forma de barbatana? S/N");
      escolher=myScanner.next();
                
             if("s".equals(escolher)){ // se for "s" é um peixe
              System.out.println(servivo+ " é um peixe");
              escolher=null;
            }
         if("n".equals(escolher)){// se for "n" é um reptil
              System.out.println(servivo+ " é um reptil ");
              escolher=null;
            }
 
      }
      
 if("n".equals(escolher)){// se a resposta de "é protegido por escamas" for "n" o programa vai por outro caminho para encontrar a solução
 System.out.println(servivo+ " tem pele nua? s/n");
 escolher=myScanner.next();
 
       if("s".equals(escolher)){ // se "tem pele nua" é anfibio
           System.out.println(servivo+ " é um anfibio");
           escolher=null;
       }
           
  
         if("n".equals(escolher)){ // se escolher-mos que "n" pergunta novamente outra coisa
         System.out.println(servivo+ " tem pelo revestido por pêlos ou penas? s/n");
         escolher=myScanner.next();
     }
    
        
          if("s".equals(escolher)){//esta ultima pergunta, se for "s" é ave se for "n" é mamifero
         System.out.println(servivo+ " tem o corpo revestido com penas, ou um par de asas? s/n");
         escolher=myScanner.next();
     }
  
  }   
          if("s".equals(escolher)){
           System.out.println(servivo+ " é uma ave");
           escolher=null;
     }
                  
                   
          if("n".equals(escolher)){
           System.out.println(servivo+ " é um mamifero");
            escolher=null;
     }



 
   do{
       System.out.println("Insira novamente o tipo de espécie do ser vivo? Opções possíveis: peixe | reptil | anfibio | ave | mamifero ");
       nomeDoFicheiro=myScanner.next();
       //para aparecer no ficheiro de texto o nome do ser vivo temos que introduzir novamente a especie do mesmo e o nome da especie vai ser o mesmo nome do ficheiro de texto


   }while(nomeDoFicheiro.length()==0);
   
         f.abreEscrita(nomeDoFicheiro);//variavel que vai dar o nome ao ficheiro de texto ( peixe, reptil, anfibio, ave, mamifero
         String st=servivo;
         f.escreverLinha(st);
         f.fechaEscrita();
 
    break;
          
      case 2:
          
          f.ListaPeixe(nomeDoFicheiro);
          f.ListaReptil(nomeDoFicheiro);
          f.ListaAnfibio(nomeDoFicheiro);
          f.ListaAve(nomeDoFicheiro);
          f.ListaMamifero(nomeDoFicheiro);
          
          
          break;
          
      case 3: 
          
          System.exit(0);
          
          break;
      }        
 
  }while(iniciarSwitch!=3);
  
 System.out.println("######O programa foi finalizado!######");// o programa é finalizado, com esta mensagem

   
   
 }    

}//esta é uma classe

//segunda classe:
import java.io.*;

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

/**
*

  • @author 10GPSI-3
    /
    import java.io.
    ;
    public class FicheiroDeTexto {

    private BufferedReader fR;
    private BufferedWriter fW;
    public int num_dias=0;

//Método para abrir um ficheiro de leitura
//Recebe o nome do ficheiro
public void abreLeitura(String nomeDoFicheiro) throws IOException
{
fR=new BufferedReader(new FileReader(nomeDoFicheiro));
}

//Método para abrir um ficheiro para escrita
//Recebe o nome do ficheiro
public void abreEscrita(String nomeDoFicheiro) throws IOException
{
fW=new BufferedWriter(new FileWriter(nomeDoFicheiro, true));
}

//Método para ler uma linha do ficheiro
//Devolve a linha lida
public String lerLinha() throws IOException
{
return fR.readLine();
}

//Método para ler um número do ficheiro
//Devolve o número lido
public int lerNumeroInt() throws IOException
{
int result = 0;
String st = fR.readLine();
if (st !=null) {
result=Integer.parseInt(st);
} else {
result=-1;
}
return result;
}

//Método para ler um número real do ficheiro
//Devolve:
// result - o número lido

public double lerNumeroDouble () throws IOException {

double result = 0.0;
String st = fR.readLine();

if (st != null) {


	result = Double.parseDouble (st);

} else result = -1;

return result;

}

    //Método para escrever uma linha no ficheiro

//Recebe a linha a escrever
public void escreverLinha(String linha) throws IOException
{
fW.write(linha,0,linha.length());
fW.newLine();
}

//Método para escrever um número inteiro no ficheiro
//Recebe o número a escrever
public void escreverNumero(int num) throws IOException
{
String st =" ";
st = st.valueOf(num);
escreverLinha(st);
}
//Método para fechar um ficheiro aberto em modo de leitura
public void fechaLeitura() throws IOException
{
fR.close();
}

//Método para fechar um ficheiro aberto em modo escrita
public void fechaEscrita() throws IOException
{
fW.close();

}

public void ListaPeixe(String nomeDoFicheiro) throws IOException{

    String linha;
    
    FicheiroDeTexto ficheiro=new FicheiroDeTexto();
    
    nomeDoFicheiro="Peixe";
    
    
    System.out.println(nomeDoFicheiro+":");
    
    
    ficheiro.abreLeitura(nomeDoFicheiro);
    
    do{
        linha=ficheiro.lerLinha();
        if(linha!=null){
            System.out.println(linha);
        }
    }while(linha!=null);
    
    
    ficheiro.fechaLeitura();

}
public void ListaReptil(String nomeDoFicheiro) throws IOException{

    String linha;
    
    FicheiroDeTexto ficheiro=new FicheiroDeTexto();
    
    nomeDoFicheiro="Reptil";
    
    
    System.out.println(nomeDoFicheiro+":");
    
    
    ficheiro.abreLeitura(nomeDoFicheiro);
    
    do{
        linha=ficheiro.lerLinha();
        if(linha!=null){
            System.out.println(linha);
        }
    }while(linha!=null);
    
    
    ficheiro.fechaLeitura();

}

public void ListaAnfibio(String nomeDoFicheiro) throws IOException{

    String linha;
    
    FicheiroDeTexto ficheiro=new FicheiroDeTexto();
    
    nomeDoFicheiro="Anfibio";
    
    
    System.out.println(nomeDoFicheiro+":");
    
    
    ficheiro.abreLeitura(nomeDoFicheiro);
    
    do{
        linha=ficheiro.lerLinha();
        if(linha!=null){
            System.out.println(linha);
        }
    }while(linha!=null);
    
    
    ficheiro.fechaLeitura();

}
public void ListaAve(String nomeDoFicheiro) throws IOException{

    String linha;
    
    FicheiroDeTexto ficheiro=new FicheiroDeTexto();
    
    nomeDoFicheiro="Ave";
    
    
    System.out.println(nomeDoFicheiro+":");
    
    
    ficheiro.abreLeitura(nomeDoFicheiro);
    
    do{
        linha=ficheiro.lerLinha();
        if(linha!=null){
            System.out.println(linha);
        }
    }while(linha!=null);
    
    
    ficheiro.fechaLeitura();

}
public void ListaMamifero(String nomeDoFicheiro) throws IOException{

    String linha;
    
    FicheiroDeTexto ficheiro=new FicheiroDeTexto();
    
    nomeDoFicheiro="Mamifero";
    
    
    System.out.println(nomeDoFicheiro+":");
    
    
    ficheiro.abreLeitura(nomeDoFicheiro);
    
    do{
        linha=ficheiro.lerLinha();
        if(linha!=null){
            System.out.println(linha);
        }
    }while(linha!=null);
    
    
    ficheiro.fechaLeitura();

}

}

ao executar o programa não consigo listar os animais (desculpe. não percebo aquilo do code)

está muito confuso, mas por favor tente perceber o código e ajude-me. obrigado pela atenção

[code]import java.io.;
import java.util.
;
public class TrabalhoVertebrados {

FicheiroDeTexto f=new FicheiroDeTexto();

public static void main (String args[])throws IOException {

Scanner myScanner=new Scanner(System.in);
FicheiroDeTexto f=new FicheiroDeTexto();

String nomeDoFicheiro=" “;//variavel que vai dar o nome ao fcheiro de texto
String escolher=” “;//ao longo do programa esta variavel irá ser precisa para fazer as perguntas ao utilizador
String servivo=” “;//variavel que vai guardar o nome do ser vivo(cao, gato, salmão, cobra)
int iniciarSwitch=0;
//System.out.println(”################################");

do{

System.out.println(“1 ? Adicionar Ser vivo”);
System.out.println(“2 ? Listar Ser Vivo//Opção que permite ver todos os animais que foram adicionados.”);
System.out.println(“3 ? Exit”);

iniciarSwitch=myScanner.nextInt();

switch (iniciarSwitch){

case 1:
System.out.println(“Insira o nome do Ser Vivo”);
servivo=myScanner.next();//quando o programa é executado inserimos um nome de um animal que vai ser guardado aqui.

System.out.println(servivo+ " é protegido por escamas? s/n");
escolher=myScanner.next();

if(“s”.equals(escolher)){//se a resposta de “é protegido por escamas” for “s” faz uma nova pergunta
System.out.println(servivo+ " tem respiração branquial, escamas de origem dérmica, membros em forma de barbatana? S/N");
escolher=myScanner.next();

if(“s”.equals(escolher)){ // se for “s” é um peixe
System.out.println(servivo+ " é um peixe");
escolher=null;
}
if(“n”.equals(escolher)){// se for “n” é um reptil
System.out.println(servivo+ " é um reptil ");
escolher=null;
}

}

if(“n”.equals(escolher)){// se a resposta de “é protegido por escamas” for “n” o programa vai por outro caminho para encontrar a solução
System.out.println(servivo+ " tem pele nua? s/n");
escolher=myScanner.next();

if(“s”.equals(escolher)){ // se “tem pele nua” é anfibio
System.out.println(servivo+ " é um anfibio");
escolher=null;
}

if(“n”.equals(escolher)){ // se escolher-mos que “n” pergunta novamente outra coisa
System.out.println(servivo+ " tem pelo revestido por pêlos ou penas? s/n");
escolher=myScanner.next();
}

if(“s”.equals(escolher)){//esta ultima pergunta, se for “s” é ave se for “n” é mamifero
System.out.println(servivo+ " tem o corpo revestido com penas, ou um par de asas? s/n");
escolher=myScanner.next();
}

}
if(“s”.equals(escolher)){
System.out.println(servivo+ " é uma ave");
escolher=null;
}

if(“n”.equals(escolher)){
System.out.println(servivo+ " é um mamifero");
escolher=null;
}

do{
System.out.println("Insira novamente o tipo de espécie do ser vivo? Opções possíveis: peixe | reptil | anfibio | ave | mamifero ");
nomeDoFicheiro=myScanner.next();
//para aparecer no ficheiro de texto o nome do ser vivo temos que introduzir novamente a especie do mesmo e o nome da especie vai ser o mesmo nome do ficheiro de texto

}while(nomeDoFicheiro.length()==0);

f.abreEscrita(nomeDoFicheiro);//variavel que vai dar o nome ao ficheiro de texto ( peixe, reptil, anfibio, ave, mamifero
String st=servivo;
f.escreverLinha(st);
f.fechaEscrita();

break;

case 2:

f.ListaPeixe(nomeDoFicheiro);
f.ListaReptil(nomeDoFicheiro);
f.ListaAnfibio(nomeDoFicheiro);
f.ListaAve(nomeDoFicheiro);
f.ListaMamifero(nomeDoFicheiro);

break;

case 3:

System.exit(0);

break;
}

}while(iniciarSwitch!=3);

System.out.println("######O programa foi finalizado!######");// o programa é finalizado, com esta mensagem

}
}//esta é uma classe

//segunda classe:
import java.io.*;

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

/**
*

  • @author 10GPSI-3
    /
    import java.io.
    ;
    public class FicheiroDeTexto {

private BufferedReader fR;
private BufferedWriter fW;
public int num_dias=0;

//Método para abrir um ficheiro de leitura
//Recebe o nome do ficheiro
public void abreLeitura(String nomeDoFicheiro) throws IOException
{
fR=new BufferedReader(new FileReader(nomeDoFicheiro));
}

//Método para abrir um ficheiro para escrita
//Recebe o nome do ficheiro
public void abreEscrita(String nomeDoFicheiro) throws IOException
{
fW=new BufferedWriter(new FileWriter(nomeDoFicheiro, true));
}

//Método para ler uma linha do ficheiro
//Devolve a linha lida
public String lerLinha() throws IOException
{
return fR.readLine();
}

//Método para ler um número do ficheiro
//Devolve o número lido
public int lerNumeroInt() throws IOException
{
int result = 0;
String st = fR.readLine();
if (st !=null) {
result=Integer.parseInt(st);
} else {
result=-1;
}
return result;
}

//Método para ler um número real do ficheiro
//Devolve:
// result - o número lido

public double lerNumeroDouble () throws IOException {

double result = 0.0;
String st = fR.readLine();

if (st != null) {

result = Double.parseDouble (st);

} else result = -1;

return result;
}

//Método para escrever uma linha no ficheiro
//Recebe a linha a escrever
public void escreverLinha(String linha) throws IOException
{
fW.write(linha,0,linha.length());
fW.newLine();
}

//Método para escrever um número inteiro no ficheiro
//Recebe o número a escrever
public void escreverNumero(int num) throws IOException
{
String st =" ";
st = st.valueOf(num);
escreverLinha(st);
}
//Método para fechar um ficheiro aberto em modo de leitura
public void fechaLeitura() throws IOException
{
fR.close();
}

//Método para fechar um ficheiro aberto em modo escrita
public void fechaEscrita() throws IOException
{
fW.close();

}

public void ListaPeixe(String nomeDoFicheiro) throws IOException{

String linha;

FicheiroDeTexto ficheiro=new FicheiroDeTexto();

nomeDoFicheiro=“Peixe”;

System.out.println(nomeDoFicheiro+":");

ficheiro.abreLeitura(nomeDoFicheiro);

do{
linha=ficheiro.lerLinha();
if(linha!=null){
System.out.println(linha);
}
}while(linha!=null);

ficheiro.fechaLeitura();

}
public void ListaReptil(String nomeDoFicheiro) throws IOException{

String linha;

FicheiroDeTexto ficheiro=new FicheiroDeTexto();

nomeDoFicheiro=“Reptil”;

System.out.println(nomeDoFicheiro+":");

ficheiro.abreLeitura(nomeDoFicheiro);

do{
linha=ficheiro.lerLinha();
if(linha!=null){
System.out.println(linha);
}
}while(linha!=null);

ficheiro.fechaLeitura();

}

public void ListaAnfibio(String nomeDoFicheiro) throws IOException{

String linha;

FicheiroDeTexto ficheiro=new FicheiroDeTexto();

nomeDoFicheiro=“Anfibio”;

System.out.println(nomeDoFicheiro+":");

ficheiro.abreLeitura(nomeDoFicheiro);

do{
linha=ficheiro.lerLinha();
if(linha!=null){
System.out.println(linha);
}
}while(linha!=null);

ficheiro.fechaLeitura();

}
public void ListaAve(String nomeDoFicheiro) throws IOException{

String linha;

FicheiroDeTexto ficheiro=new FicheiroDeTexto();

nomeDoFicheiro=“Ave”;

System.out.println(nomeDoFicheiro+":");

ficheiro.abreLeitura(nomeDoFicheiro);

do{
linha=ficheiro.lerLinha();
if(linha!=null){
System.out.println(linha);
}
}while(linha!=null);

ficheiro.fechaLeitura();

}
public void ListaMamifero(String nomeDoFicheiro) throws IOException{

String linha;

FicheiroDeTexto ficheiro=new FicheiroDeTexto();

nomeDoFicheiro=“Mamifero”;

System.out.println(nomeDoFicheiro+":");

ficheiro.abreLeitura(nomeDoFicheiro);

do{
linha=ficheiro.lerLinha();
if(linha!=null){
System.out.println(linha);
}
}while(linha!=null);

ficheiro.fechaLeitura();

}

} [/code]

conseguio descubrir o erro?

O Erro existe pois pelo seu código se faz necessário a existência de todos os arquivos, pois, o método abreLeitura() gera exceções que não estão sendo tratadas quando são chamadas pelo método ListaPeixe(e os outros que seguem o mesmo padrão).

Você pode fazer algo do tipo na classe TrabalhoVertebrados (quando for listar os animais):

try{
	f.ListaPeixe(nomeDoFicheiro);
} catch(Exception ex){
	//seu tratamento para Exception aqui
}

Porem você terá que criar um try/catch para cada chamada do mesmo tipo(f.ListaReptil(nomeDoFicheiro),f.ListaAnfibio(nomeDoFicheiro) …).

ou no método ListaPeixe(e os demais métodos de listagem):

public void ListaPeixe(String nomeDoFicheiro){  
	  
	String linha;  
	FicheiroDeTexto ficheiro=new FicheiroDeTexto();  
	nomeDoFicheiro="Peixe";  
	  
	System.out.println(nomeDoFicheiro+":");  
	  
	try{
	      ficheiro.abreLeitura(nomeDoFicheiro);  
	  
	      do{  
	            linha=ficheiro.lerLinha();  
                    if(linha!=null){  
                    System.out.println(linha);  
                
	      }while(linha!=null);  
	  
	  
              ficheiro.fechaLeitura();  

       } catch(IOException io){
		//seu tratamento para Exception aqui 
       }
	  
}

Assim você pode manter a classe TrabalhoVertebrados da forma como ela esta.

Ou você pode alterar esses métodos de listagem/leitura de arquivo.