Cannot find symbol symbol

mahdi88 -  
tksteph Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   -
salut j'ai un erreur dans mon pgm comment corrigé voici le code:
public void writeOnBUS() {

// Préparation de la chaîne
String temp = "";
temp += adresse;
temp += commande;
if (isInfo()) temp += donnees; // Trames d'info?
for (int i = 0; i<FCS_LENGTH; i++) temp += "0"; // Initialisation FCS

// Évaluation du FCS
fcs = mecanicFCS(temp);
temp = temp.substring(0,temp.length()-FCS_LENGTH) + fcs;

// Construction du stream (stuffing)
stream = "";
stream += FANION;
stream += stuff(temp,5);
stream += FANION;

// Transmission
Bus.send(stream);
}
lorsque compilé sorti ce erreur
cannot find symbol
symbol : variable Bus
location: class Trame
Bus.send(stream);

4 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Pour faire Bus.send(stream); et Bus.receive(); il faut que ta classe Bus existe et qu'elle soit accessible depuis ta classe Trame. Ce problème peut donc se résoudre par l'utilisation d'un "import ???.Bus" à condition que la classe Bus soit public.
    2
    1. mahdi88
       
      comment crée la classe bus??
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      La classe Bus n'existe pas !? Alors comment veux tu faire tes méthodes send et receive ?
      Pour créer la classe Bus, tu créés un nouveau fichier qui s'appelle Bus.java et tu fais ta déclaration dedans, sans oublier les méthodes send et receive dont tu as besoin dans ta classe Trame...
      0
    3. mahdi88
       
      comment définir la classe bus?? et la métheode send et receive je peut avec socket ;
      0
  2. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
     
    Bonjour,
    Ton code n'est pas complet on peut pas t'aider.
    0
  3. mahdi88
     
    voici le code complet
    /**
    * @(#)Trame.java
    *
    * Trame application
    *
    * @author
    * @version 1.00 2013/5/7
    */

    //*

    // Importations
    import java.util.Random; // Pour le numéro de séquence
    import java.io.*; // ReadLine
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.text.*;
    import java.net.*;
    public class Trame {

    // Constantes
    final static String FANION = "01111110";
    final static int FCS_LENGTH = 16;
    final static String POLYNOME = "1100000001111";

    // Variables
    private String adresse,
    commande,
    donnees,
    fcs,
    stream;

    // Constructeur
    public Trame() {
    }

    // Méthodes d'accès
    public void setAdresse(int valeur) {
    adresse = int2bin(valeur);
    }

    public void setDonnees(String txt) {
    donnees = txt2bin(txt);
    }

    public String getDonnees() {
    return bin2txt(donnees);
    }

    private String getSeq() {
    if (isInfo())
    return commande.substring(1,4);
    else if (isNack())
    return commande.substring(5,8);
    else
    // Pour le Ack, il faut extraire la valeur
    return int2bin((Integer.parseInt(commande.substring(5,8),2) + 8
    - ((donnees.length() / 8) % 8))
    % 8,3);

    }

    // Méthodes de vérification
    public boolean aMoi(int a) { // Destiné à mon adresse?
    return adresse.equals(int2bin(a)) ||
    adresse.equals("11111111"); // Broadcast !
    }

    public boolean fcsCheck() { // Réussi le fcs Check?
    if (fcs == "") return false; // Pas de trame!

    return Integer.parseInt(
    mecanicFCS(adresse + commande + donnees + fcs),2) == 0;
    }

    public boolean isInfo() { // Est une trame d'infos?
    return commande.charAt(0) == '0';
    }

    public boolean isAck() { // Est une trame d'Ack?
    return commande.charAt(0) == '1' && commande.charAt(4) == '0';
    }

    public boolean isNack() { // Est une trame de Nack?
    return commande.charAt(0) == '1' && commande.charAt(4) == '1';
    }

    public boolean equals(Trame autre) {// A le même # de séquence?
    // Ne vérifie que si les numéro de séquence correspondent ...

    return getSeq().equals(autre.getSeq());
    }

    // Méthodes servant à préparer les trames à l'envoie
    public void prepare() { // Trame d'informations
    Random generator = new Random();
    int seq = generator.nextInt(8);

    commande = "0" + int2bin(seq,3) + "1"
    + int2bin((seq + donnees.length()/8)%8,3);
    }

    public void prepare(Trame autre, boolean ack) { // Trame de contrôle
    if (ack) { // Ack
    commande = "10000" + autre.getSeq();
    } else { // Nack
    try {
    commande = "10011" + autre.getSeq(); // Tentative d'obtenir
    } catch (Exception e) { // le numéro de SEQ
    commande = "10011000"; // mais les infos sont
    } // peut-être invalides.
    }
    }

    // Accès au BUS
    public void writeOnBUS() {

    // Préparation de la chaîne
    String temp = "";
    temp += adresse;
    temp += commande;
    if (isInfo()) temp += donnees; // Trames d'info?
    for (int i = 0; i<FCS_LENGTH; i++) temp += "0"; // Initialisation FCS

    // Évaluation du FCS
    fcs = mecanicFCS(temp);
    temp = temp.substring(0,temp.length()-FCS_LENGTH) + fcs;

    // Construction du stream (stuffing)
    stream = "";
    stream += FANION;
    stream += stuff(temp,5);
    stream += FANION;

    // Transmission
    Bus.send(stream);
    }

    public void readOnBUS() {
    // Réception
    String temp = Bus.receive();

    // On ne conserve que la partie délimitée par les deux fanions
    int premier = temp.indexOf(FANION,0);
    int second = temp.indexOf(FANION,premier+8);

    // Initialisation
    stream = "";
    adresse = "";
    commande = "00000000";
    donnees = "";
    fcs = "";

    // Est pas une chaîne complète
    if (second != -1) {
    stream = temp.substring(premier,second+8);

    // De-stuffing
    temp = destuff(stream.substring(8,stream.length()-8),5);

    // Découpage
    if (temp.length() >= 16+FCS_LENGTH) { // Chaîne assez longue
    adresse = temp.substring(0,8);
    commande = temp.substring(8,16);
    if (temp.length() > 16+FCS_LENGTH) // Contient des données.
    donnees = temp.substring(16,temp.length()-FCS_LENGTH);
    fcs = temp.substring(temp.length()-FCS_LENGTH,temp.length());
    }
    }
    }

    /*** Section statique ***/

    // Méthode permettant de lire une adresse sur la console
    public static int lireAdresse(String msg) {
    String ligne; // Contiendra le texte lu en console
    int adr; // Valeur de l'adresse

    do {
    // Lecture sur la console
    System.out.print(msg);

    try {
    BufferedReader reader = new BufferedReader (new InputStreamReader (System.in));
    ligne = reader.readLine();
    } catch (Exception e) {ligne = "";};

    // Vérification de la validité de l'entrée
    adr = -1;
    try {adr = Integer.parseInt(ligne);}
    catch (NumberFormatException e) {};
    } while (adr < 1 || adr > 255);

    return adr;
    }

    // Méthode permettant de lire le message sur la console
    public static String lireMessage(String msg) {
    String ligne; // Contiendra le texte lu en console

    // Lecture sur la console
    System.out.println(msg);
    try {
    BufferedReader reader = new BufferedReader (new InputStreamReader (System.in));
    ligne = reader.readLine();
    } catch (Exception e) {ligne = "";};

    return ligne;
    }

    // Méthode permettant de traduire une chaîne de texte en String binaire
    private static String txt2bin(String txt) {
    String bin = "";
    int tmp;
    for (int i = 0, max = txt.length(); i<max; i++) {
    tmp = (int) txt.charAt(i);
    if (tmp < 256)
    bin += int2bin(tmp);
    else
    bin += "00111111"; // Pas encodable sur 8 bits --> «?»
    }
    return bin;
    }

    // Méthode permettant de traduire un String binaire en chaîne de texte
    private static String bin2txt(String bin) {
    String txt = "";
    for (int i = 0, max = bin.length(); i<max; i+=8)
    txt += (char) Integer.parseInt(bin.substring(i,i+8),2);
    return txt;
    }

    // Méthode permettant de traduire un int en String binaire sur 8 bits.
    private static String int2bin(int x) {
    String s = Integer.toBinaryString(x);
    for (int i = 0, max = 8-s.length(); i<max; i++)
    s = "0" + s;
    return s;
    }
    private static String int2bin(int x, int l) { // Pour longueur < 8
    if (l > 8) l = 8;
    return int2bin(x).substring(8-l,8);
    }

    // Méthode permettant de 'stuffer' un String binaire
    private static String stuff(String in, int s) {
    // s = nombre de '1' max de suite
    String out = "";
    char c; // bit actuel
    int n = 0; // Compteur de '1'

    for (int i = 0, max = in.length(); i<max; i++) {
    c = in.charAt(i);
    out += c;
    if (c == '0')
    n = 0;
    else {
    n++;
    if (n == s) { // On insère un '0' de stuffing !
    n = 0;
    out += '0';
    }
    }
    }

    return out;
    }

    // Méthode permettant de 'dé-stuffer' un String binaire
    private static String destuff(String in, int s) {
    // s = nombre de '1' max de suite
    String out = "";
    char c; // bit actuel;
    int n = 0; // Compteur de '1'

    for (int i = 0, max = in.length(); i<max; i++) {
    c = in.charAt(i);
    out += c;
    if (c == '0')
    n = 0;
    else {
    n++;
    if (n == s) { // On coupe le prochain bit !
    n = 0;
    i++;
    }
    }
    }

    return out;
    }

    // Méthode appliquant la mécanique du FCS
    private static String mecanicFCS(String chaine) {

    // PATCH temporaire PATCH /////
    // Ajout:
    chaine = chaine.substring(0,chaine.length()-FCS_LENGTH)
    + chaine.substring(chaine.length()-FCS_LENGTH+4)
    + "0000";
    // PATCH temporaire PATCH /////

    int debut = chaine.indexOf("1"), // index du premier '1'
    fin = chaine.length()-FCS_LENGTH, // index de fin des données
    i,max ; // Compteurs

    char[] sequence = chaine.toCharArray();

    while (debut != -1 && debut < fin) {

    // On boucle sur la longueur du Polynome
    for (i = 0, max = POLYNOME.length(); i<max; i++)

    if (sequence[debut+i] == POLYNOME.charAt(i))
    sequence[debut+i] = '0'; // XOR ==
    else
    sequence[debut+i] = '1'; // XOR <>

    // On recalcule où est rendu le premier '1'
    while (sequence[debut] == '0' && debut < fin) debut++;
    }

    // PATCH temporaire PATCH /////
    // Retrait:
    // return new String(sequence, chaine.length()-FCS_LENGTH, FCS_LENGTH);
    // Ajout:
    String tempo = new String(sequence, chaine.length()-FCS_LENGTH, FCS_LENGTH);
    tempo = "0000" + tempo.substring(0,12);
    return tempo;
    // PATCH temporaire PATCH /////

    }

    public static void main(String[] args) {

    // TODO, add your application code
    System.out.println("Hello World!");
    }
    }
    0
  4. tksteph Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   25
     
    Bonjour,
    1. Tout dabord ton code tels qu'il est présenté, s'il s'exécute, affichera juste Hello World!.

    2. Tu as une classe Bus dont tu fais appel et qui n'existe pourtant pas.

    Donc apporte plus de précisions par rapport à ce que tu souhaites faire
    0