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.
È tutto un pò contorto però sembrerebbe che viene;adesso il problema sta nel main: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; } }
Mi dice che c'è un errore di NullPointerException...perchè?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(); } }![]()

Rispondi quotando


