1

I have a school project where we need to create a program to convert a number into binary but i cant seem to get them to work together. they will compile but wont actually get out the right answer my toString() method works it just isin't getting the decimal the user entered or the binary from the convertToBinary so i'm not sure where it is failing. Any Help would be great. Driver and Method below! thanks!

Driver:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class DecimalConverter extends JPanel{
//Sets up the Window
public DecimalConverter(){ 
  JFrame window = new JFrame("Binary To Decimal");
  //exit program when window closes
  window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //WINDOW COMPONENETS:
  JLabel lblPrompt = new JLabel("Enter your number to convert: ");
  JLabel lblBinary = new JLabel("Binary: ");
  JTextField txtDecimal = new JTextField();
  JButton btnToBinary = new JButton("To Binary");

  //SET POSITIONS
  lblPrompt.setBounds(40, 40, 200, 30);
  txtDecimal.setBounds(250, 40, 100, 30);
  lblBinary.setBounds(40, 80, 300, 30);
  btnToBinary.setBounds(250, 120, 100, 30);

  setLayout(null);

  add(lblPrompt);
  add(txtDecimal);
  add(lblBinary);
  add(btnToBinary);

  window.add(this);
  window.setSize(400, 200);
  window.setVisible(true);

  //Event for button
  btnToBinary.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e){
        String str = txtDecimal.getText();

           DecimalBinary b = new DecimalBinary();               

           lblBinary.setText(b.toString());

        }//ends Action Performed
     }//Ends ActionListener
  );//End Event

 }//End Constructor

 public static void main(String args[]){




  new DecimalConverter();

}//ends main


}//End Class

Method:

class DecimalBinary{
private String decimal = "0";
private String binary = "";
private int dec;

public void setDecimal(String decimal){
 int dec = Integer.parseInt(decimal);
 convertToBinary(dec);
}

public String convertToBinary(int dec){
 int pow = 128;

 while (dec > 0){

    if (dec >= pow){
      binary += "1";
      dec = dec - pow;
    } 
    else if (dec < pow){
        binary += "0";
    }
 pow = pow / 2;


 }
 return decimal;
}


  public String  toString(){
  return decimal + " is " + binary + " in binary";
  }
 }
  • Add **this.decimal = decimal** in **setDecimal** and add **b.setDecimal(str)** before **lblBinary.setText(b.toString())** – Joel Oct 17 '19 at 20:10
  • Is there a way you can explain why this makes it work. Im just trying to understand how this functions so i can get the concept –  Oct 17 '19 at 20:23
  • I could explain that to you if you'd wish to but my hint would be to go to the basic and start learning Java syntax before doing graphical applications. Helpful links may be: https://stackoverflow.com/questions/10115588/what-is-the-difference-between-field-variable-attribute-and-property-in-java/10115710, https://www.tutorialspoint.com/Difference-between-constructor-and-method-in-Java – Joel Oct 17 '19 at 20:33

1 Answers1

0

Change your code as follows (// added)


public void setDecimal(String decimal){
 this.decimal = decimal // added
 int dec = Integer.parseInt(decimal);
 convertToBinary(dec);
}

public void actionPerformed(ActionEvent e){
    String str = txtDecimal.getText();

    DecimalBinary b = new DecimalBinary();               
    b.setDecimal(str) // added
    lblBinary.setText(b.toString());

}//ends Action Performed
Jonathan
  • 1,955
  • 5
  • 30
  • 50