Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Problema con assert

  1. #1

    Problema con assert

    Ciao a tutti. Vorrei semplicemente sapere perchè questo programma non mi da errore se inserisco un numero che non è compreso tra 0 e 10...

    codice:
    import java.util.*;
    public class Asser
    {
    	public static void main(String[] args)
    	{
    		Scanner scanner = new Scanner(System.in);
    		
    		System.out.print("Inserisci un numero tra 1 e 10: ");
    		int n = scanner.nextInt();
    		
    		assert (n >= 0 && n <= 10) : "errore";
    		
    		System.out.printf("Hai inserito %d\n",n);
    	}
    }

  2. #2

    Re: Problema con assert

    Originariamente inviato da Dreamer89
    Ciao a tutti. Vorrei semplicemente sapere perchè questo programma non mi da errore se inserisco un numero che non è compreso tra 0 e 10...

    codice:
    import java.util.*;
    public class Asser
    {
    	public static void main(String[] args)
    	{
    		Scanner scanner = new Scanner(System.in);
    		
    		System.out.print("Inserisci un numero tra 1 e 10: ");
    		int n = scanner.nextInt();
    		
    		assert (n >= 0 && n <= 10) : "errore";
    		
    		System.out.printf("Hai inserito %d\n",n);
    	}
    }
    prova a lanciarlo così:
    Codice PHP:
    java -ea Asser 
    ;-)

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

    Re: Problema con assert

    Originariamente inviato da Dreamer89
    codice:
    		System.out.print("Inserisci un numero tra 1 e 10: ");
    		int n = scanner.nextInt();
    		
    		assert (n >= 0 && n <= 10) : "errore";
    A parte il fatto che le asserzioni vanno abilitate esplicitamente tramite l'opzione -enableassertions (o la sua abbreviazione -ea), c'è un'altra questione concettuale molto più importante.

    Le asserzioni non vanno mai usate per le seguenti cose:
    - validazione dell'input fatto dall'utente o dei parametri da linea di comando.
    - verificare una precondition in un metodo marcato 'public'.

    Le asserzioni servono per testare delle condizioni che il programmatore si aspetta che siano sempre vere. Lo scopo delle asserzioni è quello di scovare bug nel proprio codice, non di controllare se qualcuno lo usa male o in modo sbagliato (con input errati ecc...).

    ---> Programming With Assertions
    ---> Using Assertions in Java Technology
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.