在这个二进制到十进制转换器中,如何向第二个jTextField显示十进制结果/异常抛出?
用户在第一个jTextField中输入二进制数。然后在单击“转换”按钮后,程序应以其十进制形式输出该数字。或者如果有任何非法字符(除了0或1之外),它将在jTextField中显示错误消息。
我已经掌握了所有方法,并且我知道他们正确地响应了“转换”按钮,因为当您在“二进制”jTextField中输入类似“0101b”的内容时,它会抛出正确的错误。
我的问题是,我不知道如何在第二个jTextField中显示结果/错误。我正在使用包含main方法的驱动程序方法。任何提示都非常感谢。
编辑:我认为问题在actionPerformed类中。我正在尝试更改storeString1的值(使用setText()/ getText()),具体取决于传递的测试,但检查它们也很麻烦,因为我正在尝试使用int(parseBinary)测试JTextField, boolean(isBinary)和另一个int(非法)。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class second extends JFrame implements ActionListener{
private JLabel enterString1, enterString2;
private JTextField string1, string2;
private JButton click;
private String storeString1 = "";
public second(){
setLayout(null);
setSize(450,180);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
enterString1 = new JLabel("Binary: ");
enterString2 = new JLabel("Decimal: ");
click = new JButton("Convert");
string1 = new JTextField();
string2 = new JTextField();
enterString1.setBounds(90, 25, 120, 30);
enterString2.setBounds(90, 60, 120, 30);
string1.setBounds(210, 25, 200, 25);
string2.setBounds(210, 60, 200, 25);
click.setBounds(17,105,400,30);
click.addActionListener(this);
add(click);
add(string1);
add(string2);
add(enterString1);
add(enterString2);
}
public static int parseBinary(String binary) throws NumberFormatException
{
if (!isBinary(binary))
{
throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal(binary));
}
int power = 0;
int decimal = 0;
for (int i = binary.length() - 1; i >= 0; i--)
{
if (binary.charAt(i) == '1')
{
decimal += Math.pow(2, power);
}
power++;
}
return decimal;
}
public static boolean isBinary(String binary)
{
for (char ch : binary.toCharArray())
{
if (ch != '1' && ch != '0')
{
return false;
}
}
return true;
}
public static char illegal(String iChar)
{
char test = 0;
char arr[] = iChar.toCharArray();
for(char cha : arr)
{
if (cha != '1' && cha != '0')
{
test = cha;
}
}
return test;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == click) // if the button is clicked, do the following:
{
storeString1 = string1.getText();
int a = parseBinary(storeString1);
boolean bool = isBinary(storeString1);
int b = illegal(storeString1);
string2.setText(storeString1);
}
}
}
这是我的主要方法:
public class driver
{
public static void main(String[] args)
{
second s = new second();
s.setVisible(true);
}
}