2015-08-05 3 views
0

Я написал очень простой конвертер по Фаренгейту в цельсию только для практики и, похоже, работает, но я бы хотел включить код, который бы сказал пользователю «Введите действительный номер «если они либо добавляют строку, либо ничего. Я предполагаю, что мне нужен оператор if, чтобы проверить, равно ли значение ==, как это должно быть. Я не уверен, как это сделать. Все, что я пытаюсь, дает мне какую-то ошибку, а переменная «значение» всегда подчеркивается красным squiggly.Как проверить, является ли вход двойным

Вот что у меня есть:

package sample; 

import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.scene.control.Button; 
import javafx.scene.control.TextField; 

public class Controller { 

    @FXML 
    private TextField textBoxC; 

    @FXML 
    private Button btnCels; 

    @FXML 
    private TextField textBoxF; 

    @FXML 
    void btnCels_onAction(ActionEvent event) { 

        double value = Double.parseDouble(textBoxF.getText()); 
        double answer = value * 9/5 + 35; 
        textBoxC.setText(String.valueOf(answer)); 

     } 
} 

Что я мог бы добавить в этот код, чтобы заставить ее работать ТОЛЬКО если значение textBoxF является действительным двойной тип данных?

спасибо.

+0

Проверьте следующее сообщение: http://stackoverflow.com/questions/12361492/java-typeof-primitive-data-types .. – nbro

ответ

2

Я полагаю, вы хотите, чтобы работать вокруг Exception вы получаете при попытке разобрать строку в двойной?

Простой обходной путь (не гладкая, но она работает):

try{ 
    double value = Double.parseDouble(textBoxF.getText()); 
    double answer = value * 9/5 + 35; 
       textBoxC.setText(String.valueOf(answer)); 
} 
catch (Exception e){ 
//What should happen when the input string is no double? 
} 

More Information

Таким образом, вы поймать исключение брошенный. Тем не менее, вы всегда будете пытаться конвертировать, но вы не всегда будете устанавливать новый текст в текстовое поле.

1

parseDouble бросает NumberFormatException, если String параметр не может быть преобразован в Double. Вы можете поймать его и делать то, что вы хотите:

try { 
    double value = Double.parseDouble(textBoxF.getText()); 
    double answer = value * 9/5 + 35; 
    textBoxC.setText(String.valueOf(answer)); 
} catch (NumberFormatException e) { 
    // here provide your logic to tell the user to "Enter a valid number" 
}