[Java源码]键盘输入会员卡号,对其格式、位数进行判断,不符合规则会跳转重新输入

时间:2023-02-04 18:07:12

4位数的会员卡号,活动期间,4位数字求平均值为5,则商品免费

-----------------------背景-------------------------------分割线---------------------------------------------------

下面一段源码包含几个功能:

1、扫描器声明,并指定键盘输入

2、对键盘输入的内容,进行格式判断:只允许输入数字,否则跳转重新输入

3、进行位数判断,只允许4位,否则跳转重新输入

4、对卡号,分割求平均值

源码如下:

import java.util.Scanner;

/**
 * 输入4位会员卡号
 * 每位数字相加,然后取平均值,5则中奖
 * @author wanglp
 */
public class DataInput {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		/**
		 * 会员卡号,整型类型
		 */
		int icardNo = 0;
		/**
		 * 会员卡号,字符串类型
		 */
		String scardNo = null;
		/**
		 * 会员卡号第1位数字
		 */
		int no1;
		/**
		 * 会员卡号第2位数字
		 */
		int no2;
		/**
		 * 会员卡号第3位数字
		 */
		int no3;
		/**
		 * 会员卡号第4位数字
		 */
		int no4;
		/**
		 * 4位数平均值
		 */
		double avg;
		System.out.print("请输入您的会员卡号:");
		do {
			/**
			 * 声明扫描器类型
			 */
			Scanner input = new Scanner(System.in);
			try {
				/**
				 * 指定键盘输入,指定字符串变量
				 */
				scardNo = input.next();
				icardNo = Integer.parseInt(scardNo);
			} catch (Exception e) {
				System.out.print("输入的格式不正确,请重新输入4位数字:");
				continue;
			}
			if(scardNo.length()!= 4) {
				System.out.print("输入的位数不正确,请重新输入4位数字:");
				continue;
			}else {
				break;
			}
		}while(true);
		no4 = icardNo%10;
		no3 = icardNo/10%10;
		no2 = icardNo/100%10;
		no1 = icardNo/1000;    
		avg = (no1 + no2 + no3 + no4)/4;
		if(avg == 5) {
			System.out.println("恭喜你!本次免费!");
		}else {
			System.out.println("很遗憾,只能全额支付咯...");
		}
	}

}