Как создать калькулятор простых интересов в Netbeans, в котором, если текстовое поле ставки пуста, скорость автоматически устанавливается на 8.5 и аналогичное время в течение 1 года?Как сделать значение по умолчанию для jTextField, если оно пусто
-1
A
ответ
0
Существует не менее двух сценариев, которые необходимо учитывать.
- Ничто не было введено
- Не-номер был введен
У вас также есть два различных типа полевых
- Интерес: десятичного типа (например,
float
) - Год: Тип целочисленного типа (например.
int
)
Я написал некоторые вспомогательные функции, чтобы помочь разобрать «пустое» значение. Эти вспомогательные функции являются решением, но есть приведенный ниже пример.
// Parses a JTextField for a float
public static float parseFloat(JTextField f, float defaultVal, float failureVal) {
if (f == null || f.getText().trim().isEmpty()) {
return defaultVal;
} else {
try {
return Float.parseFloat(f.getText());
} catch (NumberFormatException e) {
return failureVal;
}
}
}
// Parses a JTextField for an integer
public static int parseInt(JTextField f, int defaultVal, int failureVal) {
if (f == null || f.getText().trim().isEmpty()) {
return defaultVal;
} else {
try {
return Integer.parseInt(f.getText());
} catch (NumberFormatException e) {
return failureVal;
}
}
}
функции довольно очевидны, но цель состоит в том, чтобы обеспечить как «по умолчанию» значение 8.5
для интереса, а также значение ошибки упаковывают вы хотите, чтобы поймать эту проблему и предупредить пользователя.
Чтобы использовать эти функции, вы бы просто назвать их со всеми тремя параметрами:
System.out.println(parseFloat(rateField, 8.5f, 8.5f));
System.out.println(parseFloat(yearField, 1, 1));
год обработка ввода идентична обработке ввода процентной кроме Java использует явные числовые типы, так что копия и паста с float
изменен на int
.
Вот полный, рабочий пример:
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String ... args) {
JLabel rateLabel = new JLabel("Rate:");
JTextField rateField = new JTextField(10);
JLabel yearLabel = new JLabel("Year:");
JTextField yearField = new JTextField(10);
// Use modal to wait for user input for proof of concept
JDialog dialog = new JDialog();
dialog.setModal(true);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setLayout(new FlowLayout());
dialog.getContentPane().add(rateLabel);
dialog.getContentPane().add(rateField);
dialog.getContentPane().add(yearLabel);
dialog.getContentPane().add(yearField);
dialog.pack();
dialog.setVisible(true);
float rateValue = parseFloat(rateField, 8.5f, 8.5f);
int yearValue = parseInt(yearField, 1, 1);
JOptionPane.showMessageDialog(null, rateLabel.getText() + rateValue);
JOptionPane.showMessageDialog(null, yearLabel.getText() + yearValue);
}
// Parses a JTextField for a float
public static float parseFloat(JTextField f, float defaultVal, float failureVal) {
if (f == null || f.getText().trim().isEmpty()) {
return defaultVal;
} else {
try {
return Float.parseFloat(f.getText());
} catch (NumberFormatException e) {
return failureVal;
}
}
}
// Parses a JTextField for an integer
public static int parseInt(JTextField f, int defaultVal, int failureVal) {
if (f == null || f.getText().trim().isEmpty()) {
return defaultVal;
} else {
try {
return Integer.parseInt(f.getText());
} catch (NumberFormatException e) {
return failureVal;
}
}
}
}
Вы уже ответили на свой вопрос. 'если текстовое поле ставки пуст' что-то делать. – camickr
Я не понял -mamickr –