Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur <identifier> expected

Sujet résolu
    1 mars 2015 à 17:35:14

    Voila je suis entrain de faire un programme qui permet de gérer le classement et les points sur les tournois MTG (pour ceux qui connaisse, il permet de définir les matchs les bayes et le score). Donc si on le désire on peut jouer plusieurs rounds j'ai donc ecrit un code pour le rounds 1 qui est gérer différemment des autres, puis une fonction pour les suivants. Mais quand je compile j'ai 4 fois l'erreur "<identifier> expected" (4 qui est le nombres de paramètres que ma fonction requière). Merci d'avance pour l'aide et voici les codes (la fonction dont je parle est: "rounds").

    Le Main:

    import java.util.Scanner;
    import java.util.*;
    import java.io.*;
    
    class Main {
    
         public static int rand(int r) {
            Random rand = new Random();
            int i = rand.nextInt(r);
            return i;
        }
    
        public static int maxr (Joueur[] m) {
    	int max = m[0].rand;
    	int x = 0;
            for (int i = 0; i < m.length; i++) {
                if (m[i].rand > max) {
                    max = m[i].rand;
    		x = i;
                }
            }
    	return x;
        }
    
         public static int maxs (Joueur[] m) {
    	int max = m[0].sco;
    	int x = 0;
            for (int i = 0; i < m.length; i++) {
                if (m[i].sco > max) {
                    max = m[i].sco;
    		x = i;
                }
            }
    	return x;
        }
    
        public static int mins (Joueur[]m) {
    	int min = m[0].sco;
    	int x = 0;
            for (int i = 0; i < m.length; i++) {
                if (m[i].sco < min) {
                    min = m[i].sco;
    		x = i;
                }
            }
    	return x;
        }
    
        public static void rounds (t1,jo,m,n) { //t1=TabJ / jo=joueurs / m=matchs / n=i de la boucle (pour les rounds et le tabscore)
    	 int[] tab = new int[(jo/2)*2];
    	 int j = 1;
    	 int k = 0;
    
    	 if (jo % 2 != 0) {
    	     for (int i = 0; i <jo; i++) {
    		 if (t1[i].baye == 0) {
    		     if (t1[i].sco == t1[mins(t1)].sco) {
    			 t1[mins(t1)].baye = 1;
    			 t1[mins(t1)].matchup[0] = "vide";
    			 t1[mins(t1)].sco = -2;
    			 System.out.println(t1[mins(t1)].name + " est en baye ce rounds ci.");
    			 break;
    		     }
    		 }
    	     }
    	 }
    	 System.out.println();
    	 
    	 for (int i = 0; i < m; i++) {
    	     tab[k] = maxs(t1);
    	     t1[tab[k]].sco = -1;
    	     tab[k+1] = maxs(t1);
    	     t1[tab[k+1]].sco = -1;
    	     t1[tab[k]].matchup[n] = t1[tab[k+1]].name;
    	     t1[tab[k+1]].matchup[n] = t1[tab[k]].name;
    	     System.out.println("Match " + j  + " Rounds :" + n);
    	     System.out.println();
    	     System.out.println(t1[tab[k]].name + " contre " + t1[tab[k+1]].name);
    	     System.out.println();
    	     j++;
    	     k += 2;
    	 }
    	 
    	 
    	 k = 0;
    	 for (int i = 0; i < m; i++) {
    	     System.out.println("Qui a gagné le match " + (i+1));
    	     String Score = SU.next();
    	     if (Score.equals(t1[tab[k]].name)) {
    		 t1[tab[k]].sco += 3;
    		 t1[tab[k]].score[n] = 3;
    	     } else if (Score.equals("nul") || Score.equals("Nul")) {
    		 t1[tab[k]].sco += 1;
    		 t1[tab[k]].score[n] = 1;
    		 t1[tab[k+1]].sco += 1;
    		 t1[tab[k+1]].score[n] = 1;
    	     } else if (Score.equals(t1[tab[k+1]].name)) {
    		 t1[tab[k+1]].sco += 3;
    		 t1[tab[k]].score[n] = 3;
    	     } else {
    		 System.out.println("Erreur de saisie dans le resultat du match.");
    	     }
    	 }
    	 k = 0;
    	 
    	 System.out.println();
    	 
    	 if (jo % 2 != 0) {
    	     System.out.println(t1[mins(t1)].name + " a été en baye ce round ci, il recois donc 3 points.");
    	     t1[mins(t1)].score[n] = 3;
    	     System.out.println();
    	 }
    	 
    	 for (int i = 0; i < jo; i++) {
    	     int somme = 0;
    	     for (int b =0; b <t1[i].score.length; b++) {
    		 somme = somme + t1[i].socre[b];
    	     }
    	     t1[i].sco = somme;
    	 }
    	 
    	 System.out.println("Score du round n°:" + n);
    	 for (int i = 0; i < jo; i++) {
    	     System.out.println(t1[i].name + " a " + t1[i].sco + " points.");
    	 }
    	 System.out.println();
    
    	for (int i = 0; i < jo; i++) {
    	     t1[i].sco = 0;
    	} 
    	 
        }
    
         public static void main (String[] args) {
    
    	 String joueur = "";
    	 String round = "";
    	 int matchs = 0;
    	 
    	 Scanner SU = new Scanner(System.in);
    	 System.out.println("Combien y'a t'il de joueurs?");
    	 joueur = SU.next();
    	 System.out.println();
    	 int joueurs = Integer.parseInt(joueur);
    	 if (joueurs < 2) {
    	     System.out.println("Pas assez de joueurs!");
    	     System.out.println("Au revoir");
    	     System.exit(0);
    	 } else {
    	     if (joueurs % 2 != 0) {
    		 System.out.println("Le nombre de joueurs est impaire il y aura donc un joueur en bye a chaque round.");
    	     }	 
    		 Joueur[] tabJ = new Joueur [joueurs];
    		 
    		 for (int i = 0; i < joueurs; i++) {
    		     int j = i+1;
    		     System.out.println("Quelle est le nom du joueur " + j + "?" );
    		     tabJ[i] = new Joueur();
    		 }
    		 System.out.println();
    		 
    		 for (int i = 0; i < joueurs; i++) {
    		     int j = i+1;
    		     System.out.println("Joueur " + j + ": " + tabJ[i].name);
    		 }
    		 System.out.println();
    		 
    		 System.out.println("Combien jouez vous de round?");
    		 round = SU.next();
    		 int rounds = Integer.parseInt(round);
    		 if (rounds < 1) {
    		     System.out.println("Vous devez jouez au moins 1 rounds");
    		     System.out.println("Au revoir");
    		     System.exit(0);
    		 }
    		 matchs = joueurs / 2;
    		 for (int i = 0; i < joueurs; i++) {
    		     tabJ[i].matchup = new String[rounds];
    		     tabJ[i].score = new int[rounds];
    		 }
    		 System.out.println();
    		 
    		 System.out.println("Tirage des des.");
    		 
    		 for (int i =0; i < joueurs; i++) {
    		     tabJ[i].rand = rand(19) + 1;
    		 }
    
    		 for (int i = 0; i < joueurs; i++) {
    		     System.out.println(tabJ[i].name + " a fait " + tabJ[i].rand);
    		 }
    		 System.out.println();
    		 
    		 int[] tab = new int[(joueurs/2)*2];
    		 int j = 1;
    		 int k = 0;
    		 for (int i = 0; i < matchs; i++) {
    		     tab[k] = maxr(tabJ);
    		     tabJ[tab[k]].rand = 0;
    		     tab[k+1] = maxr(tabJ);
    		     tabJ[tab[k+1]].rand = 0;
    		     tabJ[tab[k]].matchup[0] = tabJ[tab[k+1]].name;
    		     tabJ[tab[k+1]].matchup[0] = tabJ[tab[k]].name;
    		     System.out.println("Match " + j  + " Rounds 1:");
    		     System.out.println();
    		     System.out.println(tabJ[tab[k]].name + " contre " + tabJ[tab[k+1]].name);
    		     System.out.println();
    		     j++;
    		     k += 2;
    		 }
    		 if (joueurs % 2 != 0) {
    		     tabJ[maxr(tabJ)].baye = 1;
    		     tabJ[maxr(tabJ)].matchup[0] = "vide";
    		     System.out.println(tabJ[maxr(tabJ)].name + " est en baye ce rounds ci.");
    		 }
    		 System.out.println();
    		 
    		 k = 0;
    		 for (int i = 0; i < matchs; i++) {
    		     System.out.println("Qui a gagné le match " + (i+1));
    		     String Score = SU.next();
    		     if (Score.equals(tabJ[tab[k]].name)) {
    			 tabJ[tab[k]].sco += 3;
    			 tabJ[tab[k]].score[0] = 3;
    		     } else if (Score.equals("nul") || Score.equals("Nul")) {
    			 tabJ[tab[k]].sco += 1;
    			 tabJ[tab[k]].score[0] = 1;
    			 tabJ[tab[k+1]].sco += 1;
    			 tabJ[tab[k+1]].score[0] = 1;
    			 } else if (Score.equals(tabJ[tab[k+1]].name)) {
    			 tabJ[tab[k+1]].sco += 3;
    			 tabJ[tab[k]].score[0] = 3;
    		     } else {
    			 System.out.println("Erreur de saisie dans le resultat du match.");
    		     }
    		 }
    		 k = 0;
    
    		 System.out.println();
    
    		 if (joueurs % 2 != 0) {
    		     System.out.println(tabJ[maxr(tabJ)].name + " a été en baye ce round ci, il recois donc 3 points.");
    		     tabJ[maxr(tabJ)].sco += 3;
    		     tabJ[maxr(tabJ)].score[0] = 3;
    		     System.out.println();
    		 }
    		 
    		 System.out.println("Score du round n°1:");
    		 for (int i = 0; i < joueurs; i++) {
    		     System.out.println(tabJ[i].name + " a " + tabJ[i].sco + " points.");
    		 }
    		 System.out.println();
    		 
    		 if (rounds == 1) {
    		     System.out.println("Vous avez jouez votre round, le vainqueur est: " + tabJ[maxs(tabJ)].name);
    		     System.exit(0);
    		 }
    
    		 // les autres rounds
    		 rounds (tabJ,joueurs,matchs,2);
    	     }
    	 }
    }

    La fonction concernée:

     public static void rounds (t1,jo,m,n) { //t1=TabJ / jo=joueurs / m=matchs / n=i de la boucle (pour les rounds et le tabscore)
    	 int[] tab = new int[(jo/2)*2];
    	 int j = 1;
    	 int k = 0;
    
    	 if (jo % 2 != 0) {
    	     for (int i = 0; i <jo; i++) {
    		 if (t1[i].baye == 0) {
    		     if (t1[i].sco == t1[mins(t1)].sco) {
    			 t1[mins(t1)].baye = 1;
    			 t1[mins(t1)].matchup[0] = "vide";
    			 t1[mins(t1)].sco = -2;
    			 System.out.println(t1[mins(t1)].name + " est en baye ce rounds ci.");
    			 break;
    		     }
    		 }
    	     }
    	 }
    	 System.out.println();
    	 
    	 for (int i = 0; i < m; i++) {
    	     tab[k] = maxs(t1);
    	     t1[tab[k]].sco = -1;
    	     tab[k+1] = maxs(t1);
    	     t1[tab[k+1]].sco = -1;
    	     t1[tab[k]].matchup[n] = t1[tab[k+1]].name;
    	     t1[tab[k+1]].matchup[n] = t1[tab[k]].name;
    	     System.out.println("Match " + j  + " Rounds :" + n);
    	     System.out.println();
    	     System.out.println(t1[tab[k]].name + " contre " + t1[tab[k+1]].name);
    	     System.out.println();
    	     j++;
    	     k += 2;
    	 }
    	 
    	 
    	 k = 0;
    	 for (int i = 0; i < m; i++) {
    	     System.out.println("Qui a gagné le match " + (i+1));
    	     String Score = SU.next();
    	     if (Score.equals(t1[tab[k]].name)) {
    		 t1[tab[k]].sco += 3;
    		 t1[tab[k]].score[n] = 3;
    	     } else if (Score.equals("nul") || Score.equals("Nul")) {
    		 t1[tab[k]].sco += 1;
    		 t1[tab[k]].score[n] = 1;
    		 t1[tab[k+1]].sco += 1;
    		 t1[tab[k+1]].score[n] = 1;
    	     } else if (Score.equals(t1[tab[k+1]].name)) {
    		 t1[tab[k+1]].sco += 3;
    		 t1[tab[k]].score[n] = 3;
    	     } else {
    		 System.out.println("Erreur de saisie dans le resultat du match.");
    	     }
    	 }
    	 k = 0;
    	 
    	 System.out.println();
    	 
    	 if (jo % 2 != 0) {
    	     System.out.println(t1[mins(t1)].name + " a été en baye ce round ci, il recois donc 3 points.");
    	     t1[mins(t1)].score[n] = 3;
    	     System.out.println();
    	 }
    	 
    	 for (int i = 0; i < jo; i++) {
    	     int somme = 0;
    	     for (int b =0; b <t1[i].score.length; b++) {
    		 somme = somme + t1[i].socre[b];
    	     }
    	     t1[i].sco = somme;
    	 }
    	 
    	 System.out.println("Score du round n°:" + n);
    	 for (int i = 0; i < jo; i++) {
    	     System.out.println(t1[i].name + " a " + t1[i].sco + " points.");
    	 }
    	 System.out.println();
    
    	for (int i = 0; i < jo; i++) {
    	     t1[i].sco = 0;
    	} 
    	 
        }

    et La class Joueur:

    import java.util.Scanner;
    import java.util.*;
    import java.io.*;
    
    class Joueur {
        String name = "";
        int[] score;
        String[] matchup; 
        int baye = 0;
        int id;
        int sco = 0;
        int rand;
        static int compteur = 0;
        static int nbrJ = 0;
    
        public Joueur () {
    	Scanner SU = new Scanner(System.in);
    	this.name = SU.next();
    	nbrJ++;
    	compteur++;
    	this.id = compteur;
        }
    
    }

    Merci d'avance



    • Partager sur Facebook
    • Partager sur Twitter
      1 mars 2015 à 17:43:00

      Si ça existe, il y a une raison : http://www.oracle.com/technetwork/java/codeconventions-150003.pdf

      La fonction d'environ 100 lignes + le code non commenté ça fait mal aux yeux et ça galère pour trouver les erreurs.

      Sinon :

      public static void rounds (t1,jo,m,n)

      Quand tu déclares une fonction tu es censé indiquer le type des variables.
      Style :

      public static void rounds (int[] t1, Stringjo, int m, double n)

      J'ai mis des types au hasard, mets les bons.

      Aussi on teste une fonction avant de l'écrire en mettant un return bidon. Ca évite de se planter avec une erreur d'argument et de chercher l'erreur.

      • Partager sur Facebook
      • Partager sur Twitter

      Erreur <identifier> expected

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown