per cambiare firma del costruttore intendevo che se hai la classe Libro il costruttore avrà sempre la firma(nome) Libro, se fai tanti metodi statici puoi cambiare il loro nome a seconda dei loro parametri; ma non farci caso, la storia dei metodi factory l'ho tirata fuori solo perchè il metodo creaLibro nel tuo codice non faceva niente e perchè nel nell'esercizio diceva che doveva ritornare un oggetto Libro.
Per ilprezzo effetivamente l'esercizio chiede un valore intero, non avevo visto, ma non è certo questo il problema.
Sul fatto di stampare su due linee se bastasse scrivere a console dovresti semplicemente fare come hai fatto in stampLibro usando System.out.println().
Se vuoi usare il JOptionPane per stampare su due linee mi sembra che non basta utilizzare \n, se mi viene in mente ti dico.
![]()