Erreur incompréhensible

Résolu/Fermé
Zinconnu Messages postés 11 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 11 février 2014 - Modifié par Zinconnu le 9/02/2014 à 15:52
Zinconnu Messages postés 11 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 11 février 2014 - 9 févr. 2014 à 16:15
Bonjour,
Voilà trois jours que je me suis lancé dans la programmation et j'ai un petit problème sur un programme que j'ai esayé de commencer:


public class Game extends Thread
{
    @Override
    public void run()
    { 
     int KO = 1;
        for (int nb = 0, inc = Start.K*KO*1; !isInterrupted(); nb += inc)
        {
            System.out.println(nb + " pièces d'or");
            
            try
            {
                Thread.sleep(4579);
            }
            catch (InterruptedException e)
            {
                interrupt();
            }
        }
    }
}


import java.util.Scanner;

public class Start
{ public static int K=1;
    public static void main(String[] args)
    {
        Scanner keyb = new Scanner(System.in);
        
        String stop = "P";
        
        System.out.println("Pour mettre le jeu en pause, tapez "+stop);
        
        Thread game = new Game();
        game.start();
        
        while (!game.isInterrupted())
        {
            String line = keyb.nextLine();
            
            if ( ( line.equals(stop) )$$( Start.K>0 ) )
            {Start.K =0;}
            else
            {Start.K=1;}        
            }
             }
            }

La double condition a apparemment une erreur mais je n'ai pas compris laquelle...
Merci d'avance...

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 9/02/2014 à 16:34
$$ n'existe pas, c'est soit && pour un ET, soit || pour un OU.

Attention à la valeur de K, en l'affectant à la variable inc, celle-ci sera fixée pour tout le programme et ne prendra pas en compte les modifications effectuées dans Start, selon ce que tu veux faire il faudrait plutôt remplacer nb += inc, par ton nb+= K*KO*1

De plus, tu as supprimé l'instruction game.interrupt(), du coup le programme ne s'arrêtera jamais, même si tu entres "P"

Remarque : Java est un langage objet, il n'est pas censé y avoir des variables static qui se promènent dans tous les sens dans tes classes, il vaut mieux mettre des attributs privés et les manipuler au travers de méthodes.

PS. Conserves les minuscules pour tes noms de variables, ne sont autorisés en majuscules que des valeurs constantes.

public class Game extends Thread
{
    private int k = 1;
    
    public void setK(int k)
    {
        this.k = k;
    }
    
    public int getK()
    {
        return k;
    }
    
    @Override
    public void run()
    {
        int ko = 1;
        
        for (int nb = 0; !isInterrupted(); nb += getK() * ko)
        {
            System.out.println(nb + " pièces d'or");
            
            try
            {
                Thread.sleep(4579);
            }
            catch (InterruptedException e)
            {
                interrupt();
            }
        }
    }
}

import java.util.Scanner;

public class Start
{
    public static void main(String[] args)
    {
        @SuppressWarnings("resource")
        Scanner keyb = new Scanner(System.in);
        
        String stop = "P";
        
        System.out.println("Pour mettre le jeu en pause, tapez " + stop);
        
        Game game = new Game();
        game.start();
        
        while ( !game.isInterrupted())
        {
            String line = keyb.nextLine();
            
            if (line.equals(stop) && game.getK() > 0)
            {
                game.setK(0);
                game.interrupt();
            }
            else
            {
                game.setK(1);
            }
        }
    }
}

La confiance n'exclut pas le contrôle
1
Zinconnu Messages postés 11 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 11 février 2014
9 févr. 2014 à 16:15
merci beaucoup !
0