Ho un problema su un programma da cui ho già induviduato l'origine del tipo di errore, forse riguardano le graffe ( intendo la loro disposizione, ma non il numero visto che sono e devono essere sempre un numero pari ) , ma che comunque non ho ancora individuato; il codice del programma e delle relative classi dell'applicazione è questo:

Codice Applicazione;
codice:
import java.io.*;

class Applicazione{
                   public static void main(String argv[])
		         {
		          InputStreamReader input = new InputStreamReader(System.in);
                  BufferedReader tastiera = new BufferedReader(input);

                          int v;



                          System.out.print("\n Inserimento dati canzoni: ");
                          for(int i=0;i<num;i++)
                             {
                              brano[i] = new Canzone();

                              String nome = new String();

                              System.out.print("\n Titolo Canzone: ");
                              try{
                                  nome = tastiera.readLine();
                                  }
                              catch(Exception e){
				                         System.out.println("Errore, non è una stringa!"+e);
				    							 System.exit(-1);
	                                            }

	                      int durata;

	                      System.out.print("Durata Canzone: ");

			      try{
			            String leggiNumero = tastiera.readLine();
			            durata = Integer.valueOf(leggiNumero).intValue();
			           }
			      catch (Exception e)
                                      {
			      		System.out.println("Numero non corretto!. Riprovare");
			      		return;
		         		}
					}

                          String leggiScelta;
                          int scelta;

                          try{
				leggiScelta = tastiera.readLine();
				scelta = Integer.valueOf(leggiScelta).intValue();
				}
			 catch(Exception e)
                                {
				 System.out.println("\n Numero non corretto!. Riprovare");
				 return;
				 }

                          System.out.print("Seleziona uno dei seguenti metodi: ");
                          do{
                             switch(scelta){
                                            case 1:ricerca(nome);
                                                    break;
                                            case 2:modifyTitolo(v,nome);
                                                    break;
                                            case 3:modififyDurata(v,durata);
                                                    break;
                                            case 4:searchDurata(v);
                                                    break;
                                            default:System.out.print("Tasto Errato! Riprovare.");
                                                    break;
                                            }
                              }while(!(scelta==0));
}}
Codice Classe CD;

codice:
import java.io.*;

class Cd{
         private Canzone[]brano = new Canzone[10];
         private int num;

         public void setBrano(Canzone[]b)
               {
                brano=b;}

         public Canzone[] getBrano()
               {
                return brano;}

         public void setNum()
               {
                num=0;}

         public int getNum()
               {
                return num;}

         public Cd()
               {
                for(int i=0;i<brano.length;i++)

                    brano[i] = new Canzone();
                    num=0;
               }

         public Cd(Canzone[]b)
               {
                brano=b;}

         public boolean inserimento(String nome,int durata)
                       {
						if(num<10){
							       brano[num].setNome(nome);
							       brano[num].setDurata(durata);
							       num++;
							       return(true);}
                        else return(false);
					    }

		 public int ricerca(String nome)
		           {
					for(int i=0;i<num;i++)
					   {
						if((brano[i].getNome()).equals(nome))

						  return i;

						}
					return(-1);
	                }

	     public boolean modifyTitolo(String v,String n)
	                   {
						int ind=ricerca(v);

						if(ind<0) return (false);

						else{
							 brano[ind].setNome(n);
							 return (true);}
					    }

		 public boolean modififyDurata(String v,int d)
		               {
						int ind=ricerca(v);

						if(ind<0) return(false);

						else{
							 brano[ind].setDurata(d);
							 return(true);}
					    }

		 public int searchDurata(String v)
		       {
				int ind=ricerca(v);

				if(ind<0)return -1;

				else return(brano[ind].getDurata());}

		}
Codice Classe Canzone;

codice:
class Canzone{
              private String nome;
              private int durata;

              public void setNome(String n)
                    {
                     nome=n;}
              public String getNome()
                    {
                     return nome;}
              public void setDurata(int d)
                    {
                     durata=d;}
              public int getDurata()
                    {
                     return durata;}

              public Canzone()
                    {
                     nome=null;
                     durata=0;}

              public Canzone(String n,int d)
                    {
                     nome=n;
                     durata=d;}
               }
Grazie in anticipo per le risposte, spero che la lunghezza dei vari codici non sia troppo noioso da leggere.