내 코드는 사용자가 이진 문자열 만 입력하도록합니다. 올바른 이진수 (1, 0)를 입력하면 모든 것이 올바르게 진행됩니다. 그러나 잘못된 숫자 (0 또는 1 이외의 알파벳 또는 숫자)를 입력하면 JOptionPane.ShowMessageDialog가 오류 메시지를 표시하고 "확인"또는 "교차"단추를 클릭하면 다시 나타납니다. 그래서 응용 프로그램을 닫으려면 프로세스 관리자를 사용하여 "java.exe"를 종료해야합니다.JOptionPane.showMessageDialog가 다시 나타납니다.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class Bn extends JFrame {
private JLabel l1;
private JLabel l2;
private JLabel l3;
private JTextField tf;
private JButton oc;
private JButton hd;
private JButton dc;
public Bn() {
setTitle("Binary Conversion");
setSize(350 , 190);
setResizable(false);
setLocation(720 , 200);
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.CENTER, 25, 10));
l1 = new JLabel(">>>>>>>>BINARY CONVERSION<<<<<<<<");
l2 = new JLabel("Enter The Number:");
l3 = new JLabel(" Convert to: ");
tf = new JTextField(25);
oc = new JButton("Octal");
hd = new JButton("Hexa Decimal");
dc = new JButton("Decimal");
add(l1); // Binary conversion
add(l2); // Enter The Number
add(tf); // Text Field
add(l3); // Conver to
add(oc); // Octal
add(hd); // Hexa Decimal
add(dc); // Decimal
oc.addActionListener(new cvr());
hd.addActionListener(new cvr());
dc.addActionListener(new cvr());
setVisible(true);
}
void res()
{
int b = 0;
String num = tf.getText();
int i , l;
l = num.length();
char ch;
do
{
for (i=0 ; i<l ; i++)
{
b = 0;
ch = num.charAt(i);
if (Character.isDigit(ch) && (ch == 48 || ch == 49))
b=1;
else
{
JOptionPane.showMessageDialog(null, "Please enter a binary number (1 , 0)");
}
}
}
while(b != 1);
}
void occ()
{
res();
String num = tf.getText();
long dec = Long.parseLong(num,2);
String oct = Long.toOctalString(dec);
JOptionPane.showMessageDialog(null, "Octal equivalent is: "+ oct);
}
void hdc()
{
res();
String num = tf.getText();
long dec = Integer.parseInt(num,2);
String hex = Long.toHexString(dec);
JOptionPane.showMessageDialog(null, "Hexa Decimal equivalent is: "+ hex);
}
void dcc()
{
res();
String num = tf.getText();
long decimal = 0, temp, i = 0;
temp = Long.parseLong(num);
while (temp != 0) {
long r = temp % 10;
long value = r * (int)Math.pow(2, i);
i++;
decimal = decimal + value;
temp /= 10;
}
JOptionPane.showMessageDialog(null, "Decimal equivalent is: "+ decimal);
}
private class cvr implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == oc)
{
occ();
}
if (e.getSource() == hd)
{
hdc();
}
if (e.getSource() == dc)
{
dcc();
}
}
}
public static void main(String args[])
{
Bn obj = new Bn();
}
}
위한 JOptionPane의 코드가 void res()
방법에 있습니다
여기에 내 응용 프로그램의 전체 코드입니다. 입력 값을 다시 입력 할 수 있도록이 대화 상자 창을 닫을 수 있습니까?
이것은 문제가된다 –
공극 RES() { INT B = 0이고; String num = tf.getText(); int i, l; l = num.length(); char ch; do { for (i = 0; i <1; i ++) { b = 0; ch = num.charAt (i); (Character.isDigit (ch) && (ch == 48 || ch == 49)) b = 1; else { JOptionPane.showMessageDialog (null, "이진수 (1, 0)을 입력하십시오"); } } } while (b! = 1); } –