【发布时间】:2015-01-24 19:04:49
【问题描述】:
您好,我正在尝试使用 GUI 进行信用卡验证,但无法正常工作。我很难让动作侦听器与用户在文本字段中输入的内容一起工作。我已经完成了大部分代码。谢谢你的帮助:)
import java.util.Scanner;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
公共类 CreditCard 扩展 JFrame { 公共 JTextField xyzField;
public CreditCard(){
setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
add(new JLabel("Credit Card Number"));
add(new JTextField(16));
JButton jbtCHECK = new JButton("Check");
JPanel panel = new JPanel();
panel.add(jbtCHECK);
add(panel);
CHECKListenerClass listener1 = new CHECKListenerClass();
jbtCHECK.addActionListener(listener1);
}
public static void main(String[] args) {
JFrame frame = new CreditCard();
frame.setTitle("Credit Card validation");
frame.setSize(450, 100);
frame.setLocation(200, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
class CHECKListenerClass implements ActionListener{
public void actionPerformed(ActionEvent e) {
long total;
Scanner input = new Scanner( xyzField.getText());
long number = input.nextLong();
total = sumOfEvenPlaces(number) + sumOfOddPlaces(number);
System.out.println(total);
if(isValid(total)) {
System.out.println("This card is valid.");
}
else {
System.out.println("Your card is invalid.");
}
}
}
public static boolean isValid(long total) {
if (total % 10 == 0) {
return true;
}
return false;
}
public static int sumOfEvenPlaces(long number) {
int sum = 0;
number = number / 10;
while (number != 0) {
sum += getDigit((int)((number % 10) * 2));
number = number / 100;
}
System.out.println(sum);
return sum;
}
public static int getDigit(int number) {
if (number <= 9) {
return number;
}
else if (number > 9)
return (number % 10 + number / 10);
return number;
}
public static int sumOfOddPlaces(long number) {
int sum = 0;
while (number != 0) {
sum += (int)(number % 10);
number = number / 100;
}
System.out.println(sum);
return sum;
}
public static boolean getPrefix1(long number, int k) {
return getPrefix(number, getSize(number)) == number;
}
public static int getSize(long number) {
int len = 0;
while (number >= 10) {
number /= 10;
len++;
}
return len;
}
public static long getPrefix(long number, int k) {
long result = number;
for (int i = 0; i < getSize(number) - (k - 1); i++)
result /= 10;
return result;
}
}
【问题讨论】:
标签: java user-interface actionlistener credit-card