/** * 版權所有 2022 塗聚文有限公司 * 許可信息查看: * 描述: 1-100 累加值 但要求跳過所有包含有3的數 * 公用類庫 公共所需要用的操作函數或方法 * * 歷史版本: JDK 8.01 * 2023-03-12 創建者 geovindu * 2023-03-12 添加 Lambda * 2023-03-12 修改:date * 接口類 * 2023-03-12 修改者:Geovin Du * 生成API幫助文檔的指令: *javadoc - -encoding Utf-8 -d apidoc IntegerDigitControl.java * Interface * Record * Annotation * Enum * */ package Geovin.Du.Common; import java.util.LinkedList; /** *整數位數的操作的類 * @author geovindu 塗聚文 * @version 1.0 * */ public class IntegerDigitControl { /** * 判斷是否含有數字3 * @param number 輸入參數 整數 * @return 返回是否含3的數 */ public boolean isThreeNumber(int number) { boolean isOk=false; if(number<=100&&number>0) { int ge=number%10; int shi=(number%10)/10; int bai=number/100; if(ge==3||shi==3||bai==3) isOk=true; } return isOk; } /** * 判斷是否含有指定的數字 * @param number 輸入參數 整數 * @param num 指定的數字 * @return */ public boolean isThreeNumber(int number,int num) { boolean isOk=false; if(number<=100&&number>0) { int ge=number%10; int shi=(number%10)/10; int bai=number/100; if(ge==num||shi==num||bai==num) isOk=true; } return isOk; } /** * 獲取字符串數組並將其拆分的方法 * @param number 輸入參數 整數 * @return */ public boolean isSplitNumber(int number) { boolean isOk=false; if(number<=100&&number>0) { String strNumber = String.valueOf(number); String[] digits = strNumber.split("(?<=.)"); String digit=""; for(int i = 0; i < digits.length; i++) { //System.out.println(digits[i]); digit=digits[i]; if(digit.equals("3")) isOk=true; } } return isOk; } /** * 獲取字符串數組並將其拆分的方法 * @param number 輸入是1至100的整數 * @param num 指定的數字 之外 * @return */ public boolean isSplitNumber(int number,int num) { boolean isOk=false; String strNum=String.valueOf(num); if(number<=100&&number>0) { String strNumber = String.valueOf(number); String[] digits = strNumber.split("(?<=.)"); String digit=""; for(int i = 0; i < digits.length; i++) { //System.out.println(digits[i]); digit=digits[i]; if(digit.equals(strNum)) isOk=true; } } return isOk; } /** *%(mod)獲取給定整數的餘數 使用餘數方法獲得整數的每一個數字 * @param number 輸入參數 整數 * @return 返回是否含指定的3數字 */ public boolean isModNumber(int number) { boolean isOk=false; if(number<=100&&number>0) { LinkedList<Integer> stack = new LinkedList<Integer>(); while(number > 0){ stack.push(number % 10); number = number / 10; } while ((!stack.isEmpty())){ String digit=""; //System.out.println(stack.pop()); digit=String.valueOf(stack.pop()); if(digit.equals("3")) isOk=true; } } return isOk; } /** *使用餘數方法獲得整數的每一個數字 * @param number 輸入參數 整數 * @param num 指定的數字 * @return 返回是否含指定的數字 */ public boolean isModNumber(int number,int num) { boolean isOk=false; if(number<=100&&number>0) { LinkedList<Integer> stack = new LinkedList<Integer>(); while(number > 0){ stack.push(number % 10); number = number / 10; } while ((!stack.isEmpty())){ String digit=""; //System.out.println(stack.pop()); digit=String.valueOf(stack.pop()); if(digit.equals(String.valueOf(num))) isOk=true; } } return isOk; } /** *使用字符串的 toCharArray() 得到字符數組 * @param number 輸入參數 整數 * @return 返回是否含指定的3數字 */ public boolean isCharArrayNumber(int number) { boolean isOk=false; if(number<=100&&number>0) { String strNumber = String.valueOf(number); char[] digits = strNumber.toCharArray(); String digit=""; for(int i = 0; i < digits.length; i++) { digit=String.valueOf(digits[i]); if(digit.equals("3")) isOk=true; } } return isOk; } /** * 使用字符串的 toCharArray() 得到字符數組 * @param number 輸入參數 整數 * @param num 指定的數字 * @return 返回是否含指定的數字 */ public boolean isCharArrayNumber(int number,int num) { boolean isOk=false; if(number<=100&&number>0) { String strNumber = String.valueOf(number); char[] digits = strNumber.toCharArray(); String digit=""; String strNum=String.valueOf(num); for(int i = 0; i < digits.length; i++) { digit=String.valueOf(digits[i]); if(digit.equals(strNum)) isOk=true; } } return isOk; } /** * 用取餘方法 * @param number 輸入的數字 * @return 返回是否含3的數字 */ public boolean isThreeNumberOne(int number) { boolean isOk=false; int a=0; int b=0; if(number<=100&&number>0) { while (number != 0) { b = number % 10; a =number / 10; if(a==3||b==3) isOk=true; } } return isOk; } /** * 遞歸方法 使用遞歸法從整型數中分離數字 * @param number * @return */ public boolean recursion(int number) { boolean isOk=false; if(number<=number&&number > 0) { recursion(number/10); int n=number%10; if(n==3) isOk=true; } return isOk; } /** * 遞歸方法 使用遞歸法從整型數中分離數字 * @param number 輸入的數字 * @param num 指定包含的數字 * @return */ public boolean recursion(int number,int num) { boolean isOk=false; if(number<=number&&number > 0) { recursion(number/10); int n=number%10; if(n==num) isOk=true; } return isOk; } /** * 遞歸方法 使用遞歸法從整型數中分離數字 * @param number 輸入的數字 * @param maxNumber 輸入的數字的最大數 * @return 返回是否位數上有含3的數字否 */ public boolean recursionMax(int number,int maxNumber) { boolean isOk=false; if(number<=maxNumber&&number > 0) { recursion(number/10); int n=number%10; if(n==3) isOk=true; } return isOk; } }