📄 crc.java
字号:
package tp2;
import java.applet.Applet;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.List;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
public class CRC extends Applet implements ActionListener {
private String chaine;
private String generateur;
private Panel p, pb;
private TextField tf;
private List l;
private Button b1, b2;
public void init(){
setSize(800, 300);
p = new Panel();
pb = new Panel();
p.setLayout(new GridLayout(3,1));
Label c = new Label("Code CRC");
Label g = new Label("Générateur");
tf = new TextField(30);
l = new List();
l.add("10110");
l.add("1100101");
l.add("1100000001111");
l.add("1010001110");
b1 = new Button("Calculer");
b1.addActionListener(this);
b2 = new Button("Vérifier");
b2.addActionListener(this);
Panel p1 = new Panel();
Panel p2 = new Panel();
p1.add(c);
p1.add(tf);
p2.add(g);
p2.add(l);
p.add(p1, 0);
p.add(p2, 1);
pb.add(b1);
pb.add(b2);
p.add(pb, 2);
add(p);
setVisible(true);
}
//regler la chaine de caractere, supprimer les zero au debut de la chaine
private String regler(String _str){
int t = 0;
for(int i=0 ; i<_str.length() ; i++){
if(_str.charAt(i) != '0'){
t = i;
break;
}
}
return _str.substring(t);
}
public String Calculer(String ch, String gen){
int m = ch.length();
char[] tempo = new char[gen.length()];
String str = ch, temp = null;
int n = gen.length() - 1;
char[] supp = new char[n];
for(int i=0 ; i<n ; i++){
supp[i] = '0';
}
temp = String.valueOf(supp);
str = str.concat(temp);
while(str.length() >= gen.length()){
for(int i=0 ; i<gen.length() ; i++){
if(str.charAt(i) == gen.charAt(i)){
tempo[i] = '0';
}else{
tempo[i] = '1';
}
}
//on change la variable "str";
str = String.valueOf(tempo).concat(str.substring(gen.length()));
str = regler(str);
}
return ch.concat(String.valueOf(tempo).substring(1, tempo.length));
}
public boolean Verifier(String ch, String gen){
char[] tempo = new char[gen.length()];
String str = ch;
boolean flag = true;
while(str.length() >= gen.length()){
flag = true;
for(int i=0 ; i<gen.length() ; i++){
if(str.charAt(i) == gen.charAt(i)){
tempo[i] = '0';
}else{
tempo[i] = '1';
}
}
//on change la variable "str";
str = String.valueOf(tempo).concat(str.substring(gen.length()));
for(int i=0 ; i<str.length() ; i++){
if(str.charAt(i) != '0'){
flag = false;
}
}
if(!flag){
str = regler(str);
}else{
break;
}
}
return flag;
}
public void actionPerformed(ActionEvent arg0) {
chaine = tf.getText();
generateur = l.getSelectedItem();
String result = null;
if(chaine.length()+4 < generateur.length()){
JOptionPane.showMessageDialog(this, "Generateur ne peut pas plus grand que la chaine!");
}else if(arg0.getActionCommand() == "Calculer"){
result = Calculer(chaine, generateur);
tf.setText(result);
}else if(arg0.getActionCommand() == "Vérifier"){
if(chaine.length() < generateur.length()){
JOptionPane.showMessageDialog(this, "Generateur ne peut pas plus grand que la chaine!");
}else if(Verifier(chaine, generateur)){
JOptionPane.showMessageDialog(this, "CRC est correct!");
}else{
JOptionPane.showMessageDialog(this, "CRC n'est pas correct!");
}
}
}
public void start(){}
public void stop(){}
public void destroy(){}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -