Table de vérité en java

Résolu
Bonjour à tous mes ami(e)s

voila débutante en java je rencontre deux problèmes mes codes :

le premier :

je demande à l'utilisateur d'entrer deux entier positifs et s'il me donne des entiers négatifs je veux que mon programme s'arrete. J'ai pensé à utiliser break mais il y a une erreur à la compilation. Pareil pour system.out.exit() quelqu'un saurait-il m'aider? :)

voici mon code :

public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a, b;
System.out.println("Entrez deux valeurs");
a=sc.nextInt();
b=sc.nextInt();
if((a<0)||(b<0))
System.out.println("Erreur les deux nombres doivent être positif");
System.out.exit();


double hypothenus = Math.sqrt(a*a + b*b);
double perimetre = a+b+hypothenus;
double aire = (b*a)/2.0;
System.out.println("Le perimètre vaut : "+perimetre);
System.out.println("L'aire vaut : "+aire);


Mon deuxieme probleme :

On s'interesse à l'opérateur boolean maj ternaire (c'est à dire 3 arguments ) maj(a,b,c) est vrai si et seulement si au moins deux de ces arguments sont vraies :

on a commencé a faire ceci :

static boolean maj(boolean a, boolean b, boolean c){
maj=false
if(a){
if(b){maj=true}
else {maj=c}
}
else if(b) {maj=c}

mais je comprend pas le raisonnement et donc suis incapable de continuer. Si vous aviez la gentillesse de prendre quelques minutes je vous en remercie :).

Bisous

2 réponses

  1. Modérateur
    Pour ton premier problème
    System.out.exit();
    n'existe pas.
    Tu veux sans doute faire un
    System.exit(status);
    cependant je te déconseilles de l'utiliser. Si tu veux signaler un problème alors tu créés une Exception, sinon tu fais juste un
    return;
    pour finir la méthode main. Ou encore mieux, tu fais un
    else
    pour mettre les instructions de calcul dans le cas qui va bien. Mais ne fais pas de
    exit
    .

    Pour ton deuxième problème tu pourrais compter le nombre de valeurs à true.

    public static boolean maj(boolean a, boolean b, boolean c)
    {
        int n = 0;
        
        if (a)
            n++;
        
        if (b)
            n++;
        
        if (c)
            n++;
    
        return n>=2;
    }

    Sinon en réfléchissant en table de vérité, on peut en déduire une expression simple :

    public static boolean maj(boolean a, boolean b, boolean c)
    {
        return (a && b) || (a && c) || (b && c);
    }
    1. Bonjour

      Pour ton premier problème, je crois que ça marcherait mieux avec des { } pour entourer les instructions conditionnées par le if.

      Pour le second, le raisonnement pour créer ce programme est tordu. Mais tu peux facilement faire la vérification en remplissant la table de vérité (avec 3 variables, il n'y a que 8 cas) et vérifier que le programme donne bien le bon résultat dans tous les cas.
      1. merci !

        pour le second j'ai fais une table de vérité mais je ne sais pas comment le retranscrire en code java comment faire?