当前位置: 首页 > 知识库问答 >
问题:

将decimal转换为各种数据类型时,在textfield中获取错误

越健
2023-03-14
GridPane paneForVBoxes = new GridPane();
        paneForVBoxes.setPadding(new Insets(10, 10, 10, 10));
        paneForVBoxes.setVgap(10);
        paneForVBoxes.setHgap(10);

        VBox units = new VBox(12);
        units.setAlignment(Pos.CENTER_LEFT);
        Label lbDec = new Label("Decimal");
        Label lbHex = new Label("Hex");
        Label lbBin = new Label("Binary");
        units.getChildren().addAll(lbDec, lbHex, lbBin);


        VBox textFields = new VBox(5);
        TextField tfDec = new TextField();
            tfDec.setPrefColumnCount(19);
            tfDec.setAlignment(Pos.CENTER_RIGHT);
        TextField tfHex = new TextField();
            tfHex.setPrefColumnCount(19);
            tfHex.setAlignment(Pos.CENTER_RIGHT);
        TextField tfBin = new TextField();
            tfBin.setPrefColumnCount(19);
            tfBin.setAlignment(Pos.CENTER_RIGHT);

        textFields.getChildren().addAll(tfDec, tfHex, tfBin);

        paneForVBoxes.add(units, 0, 0);
        paneForVBoxes.add(textFields, 1, 0);

我在一定程度上实现了这一点,但当我删除textfields中的所有字符时,我会收到NumberFormatExceptions,我不知道如何解决这个问题。这是我试图修复的问题:请注意,这只是十进制到二进制字段的编码,通过对此进行简单的修复,我可以将其应用到其余尚未开发的代码中。注意:我还在tfdec.settext(“0”)内部和周围尝试了integer.parseint(s),但eclipse确实不喜欢这样做

 tfDec.setOnKeyReleased(e -> {
                if (tfDec.equals("")) {
                    tfDec.setText("0");
                }
                else {
                    String bin = Integer.toBinaryString(Integer.parseInt(tfDec.getText()));
                    tfBin.setText(bin);
                }
            });

/完整代码/

    package application;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;


public class Elias16_5 extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            GridPane paneForVBoxes = new GridPane();
            paneForVBoxes.setPadding(new Insets(10, 10, 10, 10));
            paneForVBoxes.setVgap(10);
            paneForVBoxes.setHgap(10);

            VBox units = new VBox(12);
            units.setAlignment(Pos.CENTER_LEFT);
            Label lbDec = new Label("Decimal");
            Label lbHex = new Label("Hex");
            Label lbBin = new Label("Binary");
            units.getChildren().addAll(lbDec, lbHex, lbBin);


            VBox textFields = new VBox(5);
            TextField tfDec = new TextField();
                tfDec.setPrefColumnCount(19);
                tfDec.setAlignment(Pos.CENTER_RIGHT);
            TextField tfHex = new TextField();
                tfHex.setPrefColumnCount(19);
                tfHex.setAlignment(Pos.CENTER_RIGHT);
            TextField tfBin = new TextField();
                tfBin.setPrefColumnCount(19);
                tfBin.setAlignment(Pos.CENTER_RIGHT);

            textFields.getChildren().addAll(tfDec, tfHex, tfBin);

            paneForVBoxes.add(units, 0, 0);
            paneForVBoxes.add(textFields, 1, 0);

            tfDec.setOnKeyReleased(e -> {
                if (tfDec.equals("")) {
                    tfDec.setText("0");
                }
                else {
                    String bin = Integer.toBinaryString(Integer.parseInt(tfDec.getText()));
                    tfBin.setText(bin);
                }
            });







            Scene scene = new Scene(paneForVBoxes, 300, 100);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setTitle("Data Conversion");
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

共有1个答案

萧元徽
2023-03-14

你应该试试stringutils。所以这段代码:

if (tfDec.equals("")) {

将是

if (StringUtils.isBlank(tfDec.getText())) {

在这里阅读更多:stringutils.isblank()vs string.isempty()

tfDec.getText().equals("")
tfDec.equals("")
 类似资料:
  • 问题内容: 我正在尝试使用存储过程基于varchar类型的“名称”列的输入值来返回“项目”表的“ ItemId”列值,但是每当我将任何值传递给存储过程时,它都会向我返回错误: 将数据类型varchar转换为int时出错。 这就是我所说的: 问题答案: 您必须匹配参数:RETURN不会填充OUTPUT参数:您对@itemid的赋值可以做到这一点。 另外,您存储的过程太复杂了。对于从存储的proc返回

  • 问题内容: 在SO上进行了搜索和搜索,无法弄清楚 尝试将每个字段作为FLOAT进行铸造都无济于事,转换没有给我任何进一步的帮助。 如何获取以下case子句以返回THEN部分中所述的值? 错误:消息8114,级别16,状态5,行1将数据类型varchar转换为float时出错。 我的SQL查询的错误部分: average_days_pay = float terms_code = char 问题答案

  • 问题内容: 我已经将包含字符串值(例如吃)和浮动值(例如0.87)的CSV文件导入到phpMyAdmin数据库的表中。获得所有字符串值并仅保留具有十进制值的行后,需要将此类值从VARCHAR转换为DECIMAL / FLOAT,以便可以对该属性执行MAX()。 我该怎么做呢?每次我尝试通过phpMyAdmin中的GUI进行此操作时,我所有的值都会自动四舍五入为0和1s。 请帮我! 问题答案: 我认

  • 问题内容: 我已经搜索了这个很棒的论坛并在Google周围搜索,但无法解决。 我们有两个表(相信我,我与这些表无关)。这两个表都有一个名为的列。 然而,在一个表中,数据类型就是和在另一个表中,这是。 我们从选择这里被定义为和保存该ID写入其中被定义为。 作为数据类型descrepancy的结果,我们得到错误转换数据类型来。 在不弄乱数据库的情况下,我想强制使用摆脱该错误。 有什么想法我在下面的代码

  • 问题内容: 我在代码隐藏中收到转换失败的错误。我的代码如下: 我收到以下错误: 将nvarchar值转换为数据类型int时,转换失败。 在这里必须进行哪些更改? 问题答案: 我想这是一个整数,但您正在分配一个字符串。因此,这可能会解决它: 编辑:由于您已评论该会话存储了用户名,但该列是一个int列,因此您有三个选择: 更改会话以存储用户标识而不是名称 更改列以存储用户名 从存储用户名的表中选择用户

  • 问题内容: 我创建了一个过程并收到了此消息 将varchar值’%’转换为数据类型int时,转换失败。 我不知道这可能是什么,但是当我将过程更改为这样时: 似乎工作正常。我是SQL的新手,所以可以得到任何帮助,也许有更好的方法来做我想做的事情? 问题答案: 这是在子句中: 是一个整数。因此,您需要将其转换为字符串: 为什么要使用称为的列是可疑的。也许您只想要: