The Open Source Swiss Army Knife

/programmingToolBox/comp_orgI/
/programmingToolBox/comp_orgI/ + sub-categories
http://www.sirfsup.com/
web directory content
    
      

Not logged in
Chat Register Login
return to:  http:/www.sirfsup.com      /programmingToolBox   /comp_orgI 
Permalink: Converter.java
Title: add
article options : please login   |  raw source view  

import javax.swing.*;

/**
 * <p>Title: Number Converter</p>
 * <p>Description: A program for converting binary, octal, decimal and hexidecimal numbers</p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: </p>
 * @author Lars Mogensen
 * @version 1.0a
 */

public class Converter {

  //tilladte tegn i de forskellige talsystemer
  private static final String binNumbers = "01";
  private static final String octNumbers = "01234567";
  private static final String decNumbers = "0123456789";
  private static final String hexNumbers = "0123456789ABCDEF";
 
  private String bin;
  private String oct;
  private String dec;
  private String hex;
  private NumberGUI gui;

  public Converter() {
    gui = new NumberGUI( this , "LM NumberConverter 1.0");
  }

  protected void calculate( String bin , String oct , String dec , String hex ) {
    this.bin = bin;
    this.oct = oct;
    this.dec = dec;
    this.hex = hex;
    int test=0;
    //tester om netop ET af felterne indeholder noget
    if(bin.length()>0) test++;
    if(oct.length()>0) test++;
    if(dec.length()>0) test++;
    if(hex.length()>0) test++;
    if( test==1 ) {
      if(bin.length()>0)
        binConvert();
      else if(oct.length()>0)
        octConvert();
      else if(dec.length()>0)
        decConvert();
      else if(hex.length()>0)
        hexConvert();
    }
    else if(test==0) {
      gui.fejlMeddelelse("Ingen indtastet værdi!");
    }
    else if(test>1 ) {
      gui.fejlMeddelelse("For mange felter udfyldt!");
    }
  }

  private void binConvert() {
    if( check( bin , binNumbers )) {
       binToDec();
       decToOct();
       decToHex();
       gui.update(bin,oct,dec,hex);
    }
    else
       gui.fejlMeddelelse("Feltet indeholder ugyldige tegn!\nTilladte tegn er: "+binNumbers);
  }

  private void octConvert() {
     if( check( oct , octNumbers )) {
       octToDec();
       decToBin();
       decToHex();
       gui.update(bin,oct,dec,hex);
     }
     else
       gui.fejlMeddelelse("Feltet indeholder ugyldige tegn!\nTilladte tegn er: "+octNumbers);
  }

  private void decConvert() {
     if( check( dec , decNumbers )) {
       decToBin();
       decToOct();
       decToHex();
       gui.update(bin,oct,dec,hex);
     }
     else
          gui.fejlMeddelelse("Feltet indeholder ugyldige tegn!\nTilladte tegn er: "+decNumbers);
  }

  private void hexConvert() {
     if( check( hex , hexNumbers )) {
       hexToDec();
       decToBin();
       decToOct();
       gui.update(bin,oct,dec,hex);
     }
     else
       gui.fejlMeddelelse("Feltet indeholder ugyldige tegn!\nTilladte tegn er: "+hexNumbers);
  }

  //metode, der kontrollerer for ugyldige tegn - ikke specielt god!
  private boolean check( String streng , String kontrol ) {
    System.out.println(kontrol);
    for( int i=0 ; i<streng.length() ; i++ ) {
       boolean in=false;
       for( int j=0 ; j<kontrol.length() ; j++ ) {
         if(streng.charAt(i)==kontrol.charAt(j) )
            in=true;
       }
       if( in==false )
         return false;
    }
    return true;
  }

  private void binToDec() {
    int tal=0;
    for( int i=0 ; i<bin.length() ; i++ ) {
      if( bin.charAt(bin.length()-i-1)=='1')
        tal+=Math.pow(2,i);
    }
    dec = Integer.toString(tal);
  }

  private void octToDec() {
    int tal=0;
    int t;
    for( int i=0 ; i<oct.length() ; i++ ) {
      t = Character.digit(oct.charAt(oct.length()-i-1),10);
      tal += ( t * Math.pow(8,i) );
      System.out.println(t+" "+i+" "+tal);
    }
    dec = Integer.toString(tal);
  }

  private void decToBin() {
    bin = Integer.toBinaryString(Integer.parseInt(dec));
  }

  private void decToOct() {
    oct = Integer.toOctalString(Integer.parseInt(dec));
  }

  private void decToHex() {
    hex = Integer.toHexString(Integer.parseInt(dec)).toUpperCase();
  }

  private void hexToDec() {
    int tal=0;
    char s;
    int t;
    for( int i=0 ; i<hex.length() ; i++ ) {
      s = hex.charAt( hex.length()-i-1);
      if(s=='A')
         t=10;
      else if(s=='B')
         t=11;
      else if(s=='C')
         t=12;
      else if(s=='D')
         t=13;
      else if(s=='E')
         t=14;
      else if(s=='F')
         t=15;
      else
      t = Character.digit(s,10);
      tal += ( t * Math.pow(16,i) );
      System.out.println(t+" "+i+" "+tal);
    }
    dec = Integer.toString(tal);
  }

  public static void main ( String[] args ) {
    new Converter();
  }

}

Leave a Reply
Your Name:     anonymous
Your Email:
Website:  
Comments:

The author will be notified of your reply.
return to top