使用 Java Swing 的 IMEI 验证器

一.介绍

本文档介绍如何使用 Java Swing 创建一个简单的 IMEI 验证器应用程序。

二.什么是 IMEI 号码

IMEI 代表国际移动设备识别码。IMEI 用于在移动设备连接到网络时对其进行识别。每个 GSM、CDMA 或卫星移动设备都有唯一的 IMEI 号码。此号码将印在设备电池组件内。用户可以通过拨打“*#06#”来查找其设备的 IMEI 号码。IMEI 是一个 15 位数字,最后一位数字称为“校验位”,可以使用 Luhn 算法进行识别。

三.Luhn 算法

Luhn 算法又称为“Modulus 10”算法。这是一种简单的校验和公式,用于验证各种识别码,例如信用卡号、IMEI 号、美国国家提供商识别码和加拿大 社会保险号。它由IBM科学家Hans Peter Luhn创建。验证是通过验证校验位来完成的。

  1. 将最右边每个第二位数字的值加倍(第一个右边的数字作为校验位)。
  2. 将步骤 (1) 中的乘积和原始数字中未受影响的数字相加。
  3. 如果总数模 10 等于 0,则该数字有效,否则无效。

一个简单的例子:手机的 IMEI 号-354557030810924

步骤1

第2步

3+1+0+4+1+0+5+1+4+0+6+0+1+6+1+0+9+4+4=50

步骤3

50%10=0。因此上述数字是有效数字。

四.使用 Java Swing 的 IMEI 验证器

  1. 打开 Eclipse 并创建新的 Java 项目。


2. 将项目命名为 ImeiValidator 并单击“完成”。


3.现在打开包资源管理器并右键单击 ImeiValidator。


4. 创建一个名为 Imeivalidator 的新类:

  1. 在类中写入如下代码:
import javax.swing.*;  
import java.awt.BorderLayout;  
import java.awt.event.*;  
public class Imei {  
    JFrame frame;  
    JButton button;  
    JTextField field;  
    JLabel label;  
    JLabel warninglabel;  
    Box panel;  
    public static void main(String[] args) {  
        Imei hl = new Imei();  
        hl.gui();  
    }  
    public void gui() {  
        panel = Box.createVerticalBox();  
        frame = new JFrame();  
        button = new JButton("Click");  
        field = new JTextField(15);  
        field.putClientProperty("JComponent.sizeVariant", "mini");  
        label = new JLabel("Enter the IMEI Number");  
        warninglabel = new JLabel("");  
        //adding contents to frame  
        panel.add(label);  
        panel.add(field);  
        panel.add(warninglabel);  
        panel.add(button);  
        frame.getContentPane().add(BorderLayout.NORTH, panel);  
        frame.setVisible(true);  
        frame.setSize(300, 300);  
        button.addActionListener(new buttonAction());  
    }  
    public class buttonAction implements ActionListener {  
        public void actionPerformed(ActionEvent ev) {  
            int sum = 0;  
            String ImeiNo = field.getText();  
            if (ImeiNo.length() != 15) {  
                warninglabel.setText("IMEI Number should contain 15 characters");  
            } else  
            {  
                boolean errorflag = false;  
                for (int i = 0; i <= 14; i++) {  
                    //getting ascii value for each character  
                    char c = ImeiNo.charAt(i);  
                    int number = c;  
                    //Assigning number values to corrsponding Ascii value  
                    if (number < 48 || number > 57) {  
                        warninglabel.setText("Enter only numerals");  
                        errorflag = true;  
                        break;  
                    } else  
                    {  
                        switch (number) {  
                            case 48:  
                                number = 0;  
                                break;  
                            case 49:  
                                number = 1;  
                                break;  
                            case 50:  
                                number = 2;  
                                break;  
                            case 51:  
                                number = 3;  
                                break;  
                            case 52:  
                                number = 4;  
                                break;  
                            case 53:  
                                number = 5;  
                                break;  
                            case 54:  
                                number = 6;  
                                break;  
                            case 55:  
                                number = 7;  
                                break;  
                            case 56:  
                                number = 8;  
                                break;  
                            case 57:  
                                number = 9;  
                                break;  
                        }  
                        //Double the even number and divide it by 10. add quotient and remainder  
                        if ((i + 1) % 2 == 0) {  
                            number = number * 2;  
                            number = number / 10 + number % 10;  
                        }  
                        sum = sum + number;  
                    }  
                }  
                // Check the error flag to avoid overWriting of Warning Lable  
                if (!errorflag) {  
                    if (sum % 10 == 0) {  
                        warninglabel.setText("Valid");  
                    } else  
                    {  
                        warninglabel.setText("Invalid");  
                    }  
                }  
            }  
        }  
    }  
}    

  1. 现在使用运行 -> 以…方式运行 -> Java 应用程序来运行该应用程序。

  1. 将显示以下窗口:

  1. 输入IMEI号码,点击“点击”,如下图:

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢.锋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值