在catch块中,如果有人输入一个字符串或一个小于13或大于16的数字,我想打印输入有效的卡片no。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
//CreditCard class
public class CreditCard {
//Variable declaration
private JFrame frame;
private JPanel panel;
private JTextField textField;
private JLabel label;
private JLabel resLabel;
private JButton validateBtn;
//Constructor
public CreditCard() {
frame = new JFrame("Credit Card Details");
frame.setSize(350, 350);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// create a new panel and add the frame to the panel.
panel = new JPanel();
frame.add(panel);
panel.setLayout(null);
// add label
label = new JLabel("Enter Credit Card No.");
label.setBounds(10, 20, 165, 25);
panel.add(label);
// add input text
textField = new JTextField(16);
textField.setBounds(10, 50, 165, 25);
panel.add(textField);
// create a validation button
validateBtn = new JButton("Validate");
validateBtn.setBounds(10, 80, 80, 25);
panel.add(validateBtn);
frame.setVisible(true);
// set label as valid or invalid
resLabel = new JLabel();
resLabel.setBounds(180, 50, 265, 25);
panel.add(resLabel);
// add event listener
validateBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String text = textField.getText();
if (text.length() < 13 || text.length() > 16) {
resLabel.setText("Entered Value Must Be Between 13-16 Chars");
return;
}
boolean isValid = validateText(text);
if(isValid)
resLabel.setText("Credit Card is Valid");
else
resLabel.setText("Credit Card is Invalid");
}catch(NumberFormatException f){
System.out.println("Enter Valid Card Number");
}
}
private boolean validateText(String text) {
int rSum = 0, lSum = 0;
for (int i = text.length() - 2; i >= 0; i -= 2) {
if (!Character.isDigit(text.charAt(i)))
return false;
int currentNum = Character.getNumericValue(text.charAt(i));
currentNum *= 2;
if (currentNum > 9) {
int tempSum = 0;
while (currentNum >= 10) {
tempSum += currentNum % 10;
currentNum /= 10;
}
tempSum += currentNum;
currentNum = tempSum;
}
rSum += currentNum;
}
System.out.println(rSum);
for (int i = text.length() - 1; i >= 0; i -= 2) {
if (!Character.isDigit(text.charAt(i)))
return false;
int currentNum = Character.getNumericValue(text.charAt(i));
lSum += currentNum;
}
System.out.println(lSum);
int totalSum = lSum + rSum;
if (totalSum % 10 == 0)
return true;
return false;
}
});
}
}
如果希望引发异常,则必须将其包含在代码中。您可以通过在希望发生的位置添加“throw new NumberFormatException()
”来实现它。
无论如何,在您描述的情况下抛出异常不是最好的主意,因为抛出异常会阻止程序以“正常”的方式运行。我建议使用“if
”语句来检查输入--如果输入令您满意,则继续,但如果不满意--则提供下一个输入(在提到的“if
”语句周围使用无限while循环,当正确输入完成时结束其工作)或简单地编写错误消息。
我想匹配string1和以下行中出现的任何内容: 直到遇到以下情况: 因此,在上述4种情况下,使用正确的正则表达式,粗体显示的结果将是匹配的: ['string 1','string 2','string 3'] [“字符串 1” , “字符串 2” , “字符串3”] ['string1.domain.com ',' string2.domain.com ',' string3.domain.c
我的Java应用程序“A”正在从另一个Java应用程序获取移动电话号码作为字符串。因此,在应用程序A获得手机号码字符串后,我需要验证该手机号码字符串中是否只有数字。为了验证我使用了如下的简单逻辑, 我正在检查I=1,因为国家代码的第一个字符将是“”。这种方法是O(n)。还有另一种方法,我们可以使用。这将抛出<代码> No.MultFrimeExtry,以便我们可以捕获并考虑它是一个字母数字字符串。
本文向大家介绍VB.NET校验字符串函数,包括了VB.NET校验字符串函数的使用技巧和注意事项,需要的朋友参考一下 VB.NET校验字符串是否是日期 VB.NET检查字符串是否是数字 以上所述就是本文的全部内容了,希望大家能够喜欢。
如何在Go中获取字符串的字符数? 例如,如果我有一个字符串“hello”,该方法应该返回5。我看到返回字节数,而不是字符数,因此返回2而不是1,因为在UTF-8中用两个字节编码。
@target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})@retention(value=runtime)@documented@constraint(validatedby={})public@interface Min 带注释的元素必须是一个数值,该数值必须大于或等于指定的最小值。 支持的类型有: 注意,由于舍入错误
本节我们将了解最基础的数据类型,数字和字符串。打开你的Python REPL并写出以下语句。 >>> a = 2 >>> type(a) <class 'int'> >>> b = 2.5 >>> type(b) <class 'float'> 这样你就定义了两个变量(“a”和“b”)它们保存了一些数字:变量“a”保存的是一个整数,而“b”保存的是一个实数。 我们现在可以使用刚才定义的两个变量或