⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc.java

📁 CRC编码与解码。输入2进制字符串
💻 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 + -