Cannot find symbol symbol
Fermé
mahdi88
-
7 mai 2013 à 16:01
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 - 11 mai 2013 à 13:22
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 - 11 mai 2013 à 13:22
A voir également:
- Cannot find symbol symbol
- Symbol clavier - Guide
- Diaz symbol - Forum Clavier
- Cannot find required map name - Forum BIOS
- Find vba - Astuces et Solutions
- Find grep ✓ - Forum Linux / Unix
4 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
7 mai 2013 à 22:39
7 mai 2013 à 22:39
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.
gardiendelanuit
Messages postés
1770
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
19 novembre 2016
264
7 mai 2013 à 17:15
7 mai 2013 à 17:15
Bonjour,
Ton code n'est pas complet on peut pas t'aider.
Ton code n'est pas complet on peut pas t'aider.
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!");
}
}
/**
* @(#)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!");
}
}
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
Modifié par tksteph le 11/05/2013 à 13:27
Modifié par tksteph le 11/05/2013 à 13:27
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
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
9 mai 2013 à 11:14
9 mai 2013 à 15:29
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...
11 mai 2013 à 13:16