algorytm.org

Implementacja w Java



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Code 39 mod 43 - Implementacja w Java
Ocena użytkownikóww: *****  / 2
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 14 września 2006 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

BarCode.java:
/**
 * @author Tomasz Lubinski
 * (c)2006 algorytm.org
 *
 *  Code 39 Bar Code
 */
public class BarCode {
	
	  private static final char code39signs[] = {
		        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
		        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
		        'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
		        'U', 'V', 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$',
		        '/', '+', '%'};

	  private static final char code39bars[][] = {
		        {'N', 'N', 'N', 'W', 'W', 'N', 'W', 'N', 'N'},
		        {'W', 'N', 'N', 'W', 'N', 'N', 'N', 'N', 'W'},
		        {'N', 'N', 'W', 'W', 'N', 'N', 'N', 'N', 'W'},
		        {'W', 'N', 'W', 'W', 'N', 'N', 'N', 'N', 'N'},
		        {'N', 'N', 'N', 'W', 'W', 'N', 'N', 'N', 'W'},
		        {'W', 'N', 'N', 'W', 'W', 'N', 'N', 'N', 'N'},
		        {'N', 'N', 'W', 'W', 'W', 'N', 'N', 'N', 'N'},
		        {'N', 'N', 'N', 'W', 'N', 'N', 'W', 'N', 'W'},
		        {'W', 'N', 'N', 'W', 'N', 'N', 'W', 'N', 'N'},
		        {'N', 'N', 'W', 'W', 'N', 'N', 'W', 'N', 'N'},
		        {'W', 'N', 'N', 'N', 'N', 'W', 'N', 'N', 'W'},
		        {'N', 'N', 'W', 'N', 'N', 'W', 'N', 'N', 'W'},
		        {'W', 'N', 'W', 'N', 'N', 'W', 'N', 'N', 'N'},
		        {'N', 'N', 'N', 'N', 'W', 'W', 'N', 'N', 'W'},
		        {'W', 'N', 'N', 'N', 'W', 'W', 'N', 'N', 'N'},
		        {'N', 'N', 'W', 'N', 'W', 'W', 'N', 'N', 'N'},
		        {'N', 'N', 'N', 'N', 'N', 'W', 'W', 'N', 'W'},
		        {'W', 'N', 'N', 'N', 'N', 'W', 'W', 'N', 'N'},
		        {'N', 'N', 'W', 'N', 'N', 'W', 'W', 'N', 'N'},
		        {'N', 'N', 'N', 'N', 'W', 'W', 'W', 'N', 'N'},
		        {'W', 'N', 'N', 'N', 'N', 'N', 'N', 'W', 'W'},
		        {'N', 'N', 'W', 'N', 'N', 'N', 'N', 'W', 'W'},
		        {'W', 'N', 'W', 'N', 'N', 'N', 'N', 'W', 'N'},
		        {'N', 'N', 'N', 'N', 'W', 'N', 'N', 'W', 'W'},
		        {'W', 'N', 'N', 'N', 'W', 'N', 'N', 'W', 'N'},
		        {'N', 'N', 'W', 'N', 'W', 'N', 'N', 'W', 'N'},
		        {'N', 'N', 'N', 'N', 'N', 'N', 'W', 'W', 'W'},
		        {'W', 'N', 'N', 'N', 'N', 'N', 'W', 'W', 'N'},
		        {'N', 'N', 'W', 'N', 'N', 'N', 'W', 'W', 'N'},
		        {'N', 'N', 'N', 'N', 'W', 'N', 'W', 'W', 'N'},
		        {'W', 'W', 'N', 'N', 'N', 'N', 'N', 'N', 'W'},
		        {'N', 'W', 'W', 'N', 'N', 'N', 'N', 'N', 'W'},
		        {'W', 'W', 'W', 'N', 'N', 'N', 'N', 'N', 'N'},
		        {'N', 'W', 'N', 'N', 'W', 'N', 'N', 'N', 'W'},
		        {'W', 'W', 'N', 'N', 'W', 'N', 'N', 'N', 'N'},
		        {'N', 'W', 'W', 'N', 'W', 'N', 'N', 'N', 'N'},
		        {'N', 'W', 'N', 'N', 'N', 'N', 'W', 'N', 'W'},
		        {'W', 'W', 'N', 'N', 'N', 'N', 'W', 'N', 'N'},
		        {'N', 'W', 'W', 'N', 'N', 'N', 'W', 'N', 'N'},
		        {'N', 'W', 'N', 'W', 'N', 'W', 'N', 'N', 'N'},
		        {'N', 'W', 'N', 'W', 'N', 'N', 'N', 'W', 'N'},
		        {'N', 'W', 'N', 'N', 'N', 'W', 'N', 'W', 'N'},
		        {'N', 'N', 'N', 'W', 'N', 'W', 'N', 'W', 'N'}
	  };

	  private static final char start_stop[] = {
		        'N', 'W', 'N', 'N', 'W', 'N', 'W', 'N', 'N'
	  };

	  public boolean check(String txt) {
	      for (int i=0; i<txt.length(); i++) {
              if (checkLetter(txt.charAt(i)) == false)
              		return false;
          }
		  return true;
	  }

	  private boolean checkLetter(char ch) {
	        for (int i=0; i<code39signs.length; i++) {
                if (code39signs[i] == ch)
                	return true;
	        }
	        return false;
	  }
	  
	  public char[] getBars(char ch) {
	        for (int i=0; i<code39signs.length; i++) {
                if (code39signs[i] == ch)
                	return code39bars[i];
	        }		  
		  return null;
	  }
	  
	  public char[] getStartStopBars() {
		  return start_stop;
	  }
	  
	  //returns letter value for check digit
	  private int getLetterValue(char ch) {
	          for (int i=0; i<43; i++)
	                  if (code39signs[i] == ch)
	                          return i;

	          return 0;
	  }

	  // return check digit
	  private int checkDigit(String txt) {
	          int sum = 0;

	          for (int i=0; i<txt.length(); i++)
	                  sum += getLetterValue(txt.charAt(i));

	          return (sum % 43);

	  }	  
	  
	  public char[] getCheckDigitBars(String txt) {
           	return code39bars[checkDigit(txt)];
	  }	  
}
Dodaj komentarz