ciao devo costruire una classe NumBinario cha permette di rappresentare numeri binari su cui sono definite le operazione di AND bit a bit e la conversione in base 10.

codice:
 class NumBinario{
  String numero;
  int numero1;

  String g="";
  /** * un costruttore che costruisce un'istanza di NumeroBinario di 
      cui viene specificata una stringa di zeri e uni (ad esempio, 
      la stringa "0010101")
      * un costruttore che costruisce un'istanza di NumeroBinario di 
      cui viene specificato un numero intero composto di zeri e uni 
      (ad esempio, il numero 101)*/
 NumBinario(String numero){
     this.numero=numero;
 }     
NumBinario(int numero1){
     this.numero1=numero1;
 }
 /**e` un metodo statico che restituisce true se la stringa s  e`
    composta di soli zeri e uni, false altrimenti;

        Ad esempio, se s e' la stringa  "00010" il metodo restituisce true,
        se s e' la stringa "001200" restituisce false.

*/
 static boolean isBinary(String s) {
        return s.matches("[0-1]+"); 
}

/**String and(NumeroBinario nb)
     restituisce il numero binario ottenuto facendo l'operazione
    AND descritta sopra fra il numero binario che esegue il metodo e 
        il numero nb passato come argomento. */
        public NumBinario and(NumBinario nb){
            
            int lunghezza1=numero.length();
            int lunghezza2=nb.numero.length();
            
                if(lunghezza1<lunghezza2){
                    g=nb.numero.substring(0,lunghezza1);
                }
            
            int a = Integer.parseInt(g, 2);
            int b = Integer.parseInt(numero, 2);
            int z=a*b;
            nb.numero=Integer.toBinaryString(z);
            numero=nb.numero;
            NumBinario n=new NumBinario(numero);
            return n;
        }
        /**fa la conversione da binario a intero del numero che esegue il metodo
        e restituisce l'intero in base 10 corrispondente;*/
        public int toDecimal(){
         int a = Integer.parseInt(numero,2);
         return a;
     }
    
           public String toString(){
        NumBinario n=new NumBinario(numero);
         String s="";
         s+=n.numero;
         return s;
 }

}
È tutto un pò contorto però sembrerebbe che viene;adesso il problema sta nel main:

codice:
import java.util.*;
import java.io.*;
import java.io.BufferedReader;
class ProvaNumeriBinari{
public static void main(String args[]) throws IOException{
InputStreamReader reader =new InputStreamReader(System.in);
BufferedReader myInput =new BufferedReader(reader);
 String f=myInput.readLine();
/**e per ogni riga:

  - controlla se rappresenta un numero binario
  - se rappresenta un numero binario
    * crea l'oggetto NumeroBinario
    * ne calcola la rappresentazione in base 10
    * calcola l'AND tra il numero stesso e il numero 101011.
  - se non rappresenta un numero binario
    * stampa il messaggio "non binario"
*/
while(!f.equals("no")){
f=myInput.readLine();
NumBinario n=new NumBinario(f);
if(n.isBinary(f)){
    NumBinario n1=new NumBinario(101011);
    System.out.println(n.toDecimal());
    NumBinario n2=n.and(n1);
    System.out.println(n.toString());
    
}else
    System.out.println("non è un numero binario");

}


 myInput.close();
}

}
Mi dice che c'è un errore di NullPointerException...perchè?