Драйвер и метод не работают вместе - PullRequest
1 голос
/ 17 октября 2019

У меня есть школьный проект, в котором нам нужно создать программу для преобразования числа в двоичное, но я не могу заставить их работать вместе. они будут компилироваться, но на самом деле не получат правильный ответ, мой метод toString () работает, он просто не получает десятичное число, введенное пользователем, или двоичный файл от convertToBinary, поэтому я не уверен, где он терпит неудачу. Любая помощь будет великолепна. Драйвер и метод ниже! спасибо!

Драйвер:

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

Метод:

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";
  }
 }

1 Ответ

0 голосов
/ 17 октября 2019

Измените ваш код следующим образом (// 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
...