在javafx中将整数转换为二进制等而不使用预定义的方法

时间:2015-11-30 18:53:05

标签: javafx

我必须在JavaFX中编写一个应用程序,它使用三个文本字段在二进制,十六进制和十进制数之间进行转换。我设法做了所需的布局,应用程序执行它应该做的事情,但我使用了禁止的预定义方法(Integer.toHexString等)。我只把它作为原型,所以既然我知道其他一切都没问题,我怎么能在没有这些方法的情况下继续进行转换呢?

这是代码的一部分,其中t1,t2和t3分别是十进制,十六进制和二进制的文本字段。

编辑:好的,所以我设法搞清楚了!我只有一个小问题:在二进制字段中,我不知道如何将输入限制为仅0或1.为了简单起见,我只复制了第三个文本字段的代码。

编辑2:我在某种程度上得到了它,但它并不适用于所有情况。如果数字以1以外的数字开头,它仍然会转换它。它在某些情况下会中断,所以我猜它是部分正确的。有人可以帮忙吗?

t3.setOnKeyPressed(e -> {
            if (e.getCode() == KeyCode.ENTER) {

                int decimal = 0;
                int power = 0;
                int bin = Integer.parseInt(t3.getText());

                while (bin != 0) {
                    if (bin % 10 > 1) {
                        break;
                    } else {//binary
                        int tmp = bin % 10;
                        decimal += tmp * Math.pow(2, power);
                        bin = bin / 10;
                        power++;
                    }
                }

   t1.setText(String.format("%d", decimal));

   char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
   String st = "";
   while (decimal > 0) {
    int y = decimal % 16;
    st = hex[y] + st;
    decimal = decimal / 16;
    t2.setText(st);
     }
   }
 });

0 个答案:

没有答案