Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    10

    [JAVA]Verificare se N è un quadrato perfetto

    Devo scrivere un metodo che verifichi se N è un quadrato perfetto(ovvero se è il quadrato di un altro numero naturale), restituendo l'esito della verifica sotto forma di valore di tipo BOOLEAN.

    Ho inizianto a scrivere qualcosa:

    codice:
    class MetodoQuadratoPerfetto{
    	public static boolean quadrato(boolean n){
    		double a;
    		double radice;
    
    		radice=Math.sqrt(a);
    
    		if(radice*radice==a)
    
    		System.out.println("quadrato perfetto");
    
    		else
    		System.out.println("quadrato non perfetto");
    
    		return n;
    	}
    }
    Essendo la prima volta che mi trovo a dover lavorare con dei valori di tipo BOOLEAN non so come comportarmi e volevo chiedervi se è giusto quello che ho scritto (in particolare il prototipo del metodo), compilando il programma l'unico errore visualizzato mi dice che la variabile a non è stata inizializzata,ma tale variabile non dovrebbe essere "presa" dall'applicazione che invoca tale metodo?

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

    Re: [JAVA]Verificare se N è un quadrato perfetto

    Originariamente inviato da merloMT
    Essendo la prima volta che mi trovo a dover lavorare con dei valori di tipo BOOLEAN non so come comportarmi e volevo chiedervi se è giusto quello che ho scritto
    No. Intanto la variabile 'a' non è inizializzata e questo è un errore. Ma poi comunque, scusa, se il valore N lo devi passare al metodo .... mica puoi passarlo boolean!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    10
    E' la prima volta che mi trovo a lavorare con il tipo BOOLEAN e sono un pò disorientato, puoi spiegarmi come ragionare in questi casi?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280
    Originariamente inviato da merloMT
    E' la prima volta che mi trovo a lavorare con il tipo BOOLEAN e sono un pò disorientato, puoi spiegarmi come ragionare in questi casi?
    Stando a Wikipedia, il quadrato perfetto "è un numero intero che può essere espresso come il quadrato di un altro numero intero".

    Quindi il metodo dovrebbe avere come parametro un int e restituire un boolean, per indicare se il valore è un quadrato perfetto o no (condizione booleana sì/no appunto).

    Il test è banale. Calcoli la radice quadrata, questo valore lo ottieni come double ma lo devi convertire ad int. Di questo valore int ne fai il quadrato. Se coincide con il valore iniziale, è un quadrato perfetto. La comparazione dà già un valore boolean che puoi restituire.

    Esempio:
    input di 50:
    radice quadrata = 7,07106....blabla....

    Non puoi fare il quadrato di questo .... altrimenti otterresti praticamente lo stesso valore iniziale!!! (e anzi, non è detto che ottieni esattamente lo stesso identico valore ... per questioni di errori sulle operazioni floating-point).

    Devi convertirlo a int, quindi 7 e poi fai il quadrato: 7 x 7 = 49. Diverso da 50, quindi non è un quadrato perfetto!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    10
    Seguendo quello che mi hai suggerito ho scritto questo:

    codice:
    class MetodoQuadratoPerfetto{
    	public static boolean quadrato(int n){
    		double reale;
    		int intero;
    		boolean quadrato;
    		reale=0;
    		reale=Math.sqrt(reale);
    		intero=(int)reale;
    
    		intero=intero*intero;
    
    		quadrato=intero==reale;
    
    		return quadrato;
    	}
    }
    Se inserisco il valore 16 il risultato è true, ma anche se inserisco il valore 17!!!
    Dove ho sbagliato?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280
    Originariamente inviato da merloMT
    Se inserisco il valore 16 il risultato è true, ma anche se inserisco il valore 17!!!
    Dove ho sbagliato?
    Non vedo l'uso del parametro 'n' ... stai usando sempre il valore 0 di 'reale'!!!!

    Poi comunque si può semplificare .... avevo detto ad esempio che già il confronto fornisce un boolean ... che puoi restituisce subito!

    Insomma ... bastano 3 o max 4 linee di codice ...

    EDIT: no mi correggo. Il minimo facendo la cosa comunque pulita sono 2 righe di codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    chiedo scs se ri-apro questo thread dopo quasi 2 anni, ma ho trovato la soluzione anche perche avevo bisogno anche io di un algoritmo per verificare se un numero è un quadrato perfetto:
    codice:
    public class QuadratoPerfetto { 
    /** 
    * @param args the command line arguments       
    */      
    public static void main(String[] args) {                        
    int x=9;  		
    int radice;    		
    radice= (int) Math.sqrt(x);    		
    if(radice*radice==x)    		
    System.out.println("quadrato perfetto");    		else  		
    System.out.println("quadrato non perfetto");    		      
    }  
    }
    così facendo il programma funziona

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 © 2025 vBulletin Solutions, Inc. All rights reserved.