I am working on a program that takes an integer number base 10 and converts it to a given base between 2 and 20. I need to consider the fact that number bases over 10 also include letters and so my values must be stored in a stack that holds characters (CharacterStack).
I am having a lot of problems with my code with a long list of errors that I have not even heard of nevermind knowing where they originate. My code is:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyBaseConverter extends JFrame implements ActionListener
{
private JLabel lblNumber,lblBase,lblAnswer;
private JTextField txtNumber,txtBase;
private JPanel pCentre;
private JComboBox cmbBase;
private JButton btnConvert;
private int remainder;
private CharacterStack start,current;
private String ans;
MyBaseConverter()
{
Container c = getContentPane();
c.setBackground(Color.LIGHT_GRAY);
pCentre = new JPanel();
pCentre.setBackground(Color.GRAY);
lblNumber = new JLabel("Please Enter Integer");
lblNumber.setFont(new Font("Serif",Font.BOLD,14));
txtNumber = new JTextField();
txtNumber.setColumns(4);
txtNumber.setFont(new Font("Serif",Font.BOLD,14));
String [] nums ={"2","3","4","5","6","7","8","9","11","12","13","14","15","16","17","18","19","20"};
lblBase = new JLabel("Please Enter New Base");
lblBase.setFont(new Font("Serif",Font.BOLD,14));
txtBase = new JTextField();
txtBase.setColumns(4);
txtBase.setFont(new Font("Serif",Font.BOLD,14));
btnConvert = new JButton("Convert");
btnConvert.setFont(new Font("Serif",Font.BOLD,14));
btnConvert.addActionListener(this);
lblAnswer = new JLabel("");
lblAnswer.setFont(new Font("Serif",Font.BOLD,14));
lblAnswer.setBackground(Color.WHITE);
pCentre.add(lblNumber);
pCentre.add(txtNumber);
pCentre.add(lblBase);
pCentre.add(txtBase);
pCentre.add(btnConvert);
pCentre.add(lblAnswer);
c.add(pCentre);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == btnConvert)
{
try
{
int no = Integer.parseInt(txtNumber.getText().trim());
int bs = Integer.parseInt(txtBase.getText().trim());
char filler;
start = null;
while(no!=0)
{
remainder = (no%2);
filler = letter(remainder);
current = new CharacterStack(filler);
if (start == null)
start=current;
else
{
current.setLink(start);
start = current;
}
no = no/2;
}
while ( current != null)
{ String ans="";
ans += ""+ current.getCh();
current = current.getLink();
}
lblAnswer.setText(ans);
}
catch(NumberFormatException ex)
{
lblAnswer.setText("Both Numbers Must Be Numeric");
}
}
}//End of ActionPerformed
public static char letter(int rem)
{
char c;
if(rem < 10)
return (char) rem;
else
switch(rem)
{
case 10 : c = 'A';
case 11 : c = 'B';
case 12 : c = 'C';
case 13 : c = 'D';
case 14 : c = 'E';
case 15 : c = 'F';
case 16 : c = 'G';
case 17 : c = 'H';
case 18 : c = 'I';
case 19 : c = 'J';
}
return c;
}
public static void main (String args[])
{
MyBaseConverter mbc = new MyBaseConverter();
mbc.setSize(600,400);
//mbc.setLocation(0,0);
mbc.setTitle("My Number Base Converter");
mbc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mbc.setVisible(true);
}
}//End of Class