Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    calcolo del fattoriale

    Ciao a tutti,

    ho un problema con un file .java da creare. Devo creare una classe per calcolare il fattoriale di un numero usando BigInteger e poi un'altra (in un file separato) che visualizzi la richiesta del numero (Inserisci numero di cui vuoi il fattoriale) e il risultato.

    Ho creato il primo file, ma è incompleto poichè non riesco a finirlo e perciò il compilatore mi da degli errori.
    Questo è ciò che ho scritto:

    codice:
    import java.math.BigInteger;
    
    public class Fattoriale {
    	public static void main(String[] args) {
    		calcolaFattoriale();
    			int result;
    
    		}
    		private static BigInteger calcolaFattoriale(BigInteger numero) {
    			while (numero<=1){
    			BigInteger numero = new BigInteger ();
    			result = numero.multiply (BigInteger.valueOf (numero.subtract(1)));
    			}
    			}
    			}
    Qualcuno potrebbe darmi una mano correggendo il codice per favore?

    1. non so come implementare il metodo calcolaFattoriale()
    2. non sono sicura che il ciclo while sia formulato correttamente
    3. non so che pesci prendere...anche se questo non è un problema di java

    Grazie a chiunque abbia voglia di aiutarmi

  2. #2
    codice:
    import java.math.BigInteger;
    
    public class Fattoriale {
    	public static void main(String[] args) {
    		System.out.println(calcolaFattoriale(new BigInteger("12")));
    
    		}
    		private static BigInteger calcolaFattoriale(BigInteger numero) {
                      if (numero.equals(BigInteger.ONE) || numero.equals(new BigInteger("2")))
                         return numero;
                      else
                         return (calcolaFattoriale(numero.subtract(BigInteger.ONE))).multiply(numero);
                     }
    }
    dovrebbe andare e calcolarti il fattoriale di 12.
    c'erano un paio di errori di parentesi, ho editato.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: calcolo del fattoriale

    Originariamente inviato da ::silver73::
    Devo creare una classe per calcolare il fattoriale di un numero usando BigInteger
    Vedi questa discussione di qualche giorno fa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Spiegazione chiarissima...grazie davvero!

    Ma se io volessi dare all'utente la possibilità di inserire un numero a piacere di cui calcolare il fattoriale?

    Vorrei inserire una serie di stampe a video come queste:
    codice:
    System.out.println("::CALCOLO DEL FATTORIALE::");
    System.out.println("Inserisci un numero:" + numero);
    System.out.println("Il fattoriale calcolato del numero" + numero + "!" + "è:" + FattorialeCalcolato);
    e dare la possibilità di calcolare il fattoriale di qualsiasi numero...

    Cosa dovrei modificare del codice...non posso inizializzare il new BigInteger a cui tu hai assegnato "12" perchè non avrebbe senso...

    come faccio?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da ::silver73::
    Ma se io volessi dare all'utente la possibilità di inserire un numero a piacere di cui calcolare il fattoriale?
    Se l'input è fatto dallo standard-input, puoi usare la classe Scanner (passando al costruttore System.in) ed usare il metodo nextBigInteger() per leggere un BigInteger.

    Ma in generale, se hai una stringa puoi sempre creare un BigInteger partendo da quella.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    Scusami se sono proprio di coccio ma mi potresti fare l'esempio col codice, perchè in teoria vado alla grande ma a scrivere il codice correttamente una schiappa...vedi codice che avevo scritto sopra!!!

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    codice:
    import java.math.*;
    import java.util.*;
    ...
    
    Scanner sc = new Scanner (System.in);
    System.out.print ("Inserisci un numero: ");
    BigInteger bi = sc.nextBigInteger ();
    Da notare che nextBigInteger() può lanciare diverse eccezioni e quindi dovresti gestirle. Ma puoi fare anche una gestione dell'input più "sofisticata", del tipo: finché non si inserisce un BigInteger valido, continua a stampare il testo di prompt e a fare l'input.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    Ma se decidessi di non gestire alcuna eccezione perchè le richieste per l'esercizio sono minime potrei lasciarlo vuoto?

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da ::silver73::
    Ma se decidessi di non gestire alcuna eccezione perchè le richieste per l'esercizio sono minime potrei lasciarlo vuoto?
    Lasciare vuoto cosa?
    Le eccezioni che i metodi di Scanner possono lanciare sono praticamente tutte "unchecked", quindi non sei obbligato a gestirle/dichiararle. Ovvio che se non gestisci le eccezioni, alla prima che viene lanciata, il programma termina.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  10. #10
    ok era quello che volevo sapere
    ero in dubbio se poter lasciare non dichiarato il
    codice:
    BigInteger bi = sc.nextBigInteger ();
    nextBigInteger...il programma non richiede la gestione di eccezioni perciò non vorrei strafare visto che già me la cavo poco e male con le basi più semplici di java

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.