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();
}
}
return to top