Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.nio.charset.StandardCharsets;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class FindLuckyNumber {
- public static void main(String[] args) {
- Path file = Paths.get("input.txt");
- try {
- BufferedReader reader = Files.newBufferedReader(file, StandardCharsets.UTF_8);
- String line;
- int i = 0;
- while ((line = reader.readLine()) != null) {
- System.out.println("+++++++++++++++ line:" + (i++) + " ++++++++++++");
- String[] arrNumb = line.split(" ");
- for (String num : arrNumb) {
- checkNumber(num);
- }
- }
- reader.close();
- } catch (IOException e) {
- System.err.println("IOException: " + e.getMessage());
- }
- }
- private static void checkNumber(String num) {
- String regExDupNumb = "([0-9])\\1+";
- String regExThreeZero = "^[1-9]+[0-9]*[0]{2,}$";
- String regExDupNumb2 = "^(\\d\\d)\\1$";
- if (num.length() == 1) {
- System.out.println("1 เลขหลักเเดียว:" + num);
- } else if (getMatcher(num, regExDupNumb)) {
- System.out.println("2 ซ้ำอย่างน้อยสองตัว:" + num);
- } else if (num.length() >= 3 && IsSortNumb(num)) {
- System.out.println("3 เลขเรียง:" + num);
- } else if (num.length() >= 3 && getPalindrome(num)) {
- System.out.println("4 เลขหาบ:" + num);
- } else if (num.length() > 3 && getMatcher(num, regExThreeZero)) {
- System.out.println("5 หลักร้อยหลักพัน:" + num);
- } else if (num.length() == 4 && getMatcher(num, regExDupNumb2)) {
- System.out.println("6 ซ้ำสองคัวสองครั้ง:" + num);
- }
- }
- private static boolean IsSortNumb(String num) {
- int length = (num.length()) - 1;
- int valueDesc;
- int valueAsc;
- int value;
- String firstValue;
- boolean result = false;
- value = Integer.parseInt(String.valueOf(num.charAt(1)));
- firstValue = String.valueOf(num.charAt(0));
- valueDesc = value + 1;
- valueAsc = value - 1;
- if (firstValue.equals(String.valueOf(valueAsc))) {
- for (int j = 0; j < length; j++) {
- value = Integer.parseInt(String.valueOf(num.charAt(j + 1)));
- firstValue = String.valueOf(num.charAt(j));
- valueAsc = value - 1;
- if (firstValue.equals(String.valueOf(valueAsc))) {
- result = true;
- } else {
- return result = false;
- }
- }
- } else if (firstValue.equals(String.valueOf(valueDesc))) {
- for (int i = 0; i < length; i++) {
- value = Integer.parseInt(String.valueOf(num.charAt(i + 1)));
- firstValue = String.valueOf(num.charAt(i));
- valueDesc = value + 1;
- if (firstValue.equals(String.valueOf(valueDesc))) {
- result = true;
- } else {
- return result = false;
- }
- }
- }
- return result;
- }
- private static Boolean getPalindrome(String num) {
- String regExPalindrome4 = "^(\\d)(\\d*)\\2\\1$";
- String regExPalindrome3 = "^(\\d)(\\d)\\1$";
- if (num.length() == 3) {
- return getMatcher(num, regExPalindrome3);
- } else if (num.length() == 4) {
- return getMatcher(num, regExPalindrome4);
- }
- return false;
- }
- private static Boolean getMatcher(String num, String regExThreeZero) {
- // Create a Pattern object
- Pattern r = Pattern.compile(regExThreeZero);
- // Now create matcher object.
- Matcher m = r.matcher(String.valueOf(num));
- return m.matches();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement