Advertisement
Guest User

Untitled

a guest
Feb 7th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 4.17 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.nio.charset.StandardCharsets;
  6. import java.nio.file.Files;
  7. import java.nio.file.Path;
  8. import java.nio.file.Paths;
  9. import java.util.regex.Matcher;
  10. import java.util.regex.Pattern;
  11.  
  12. public class FindLuckyNumber {
  13.     public static void main(String[] args) {
  14.         Path file = Paths.get("input.txt");
  15.         try {
  16.             BufferedReader reader = Files.newBufferedReader(file, StandardCharsets.UTF_8);
  17.             String line;
  18.             int i = 0;
  19.             while ((line = reader.readLine()) != null) {
  20.                 System.out.println("+++++++++++++++ line:" + (i++) + " ++++++++++++");
  21.                 String[] arrNumb = line.split(" ");
  22.                 for (String num : arrNumb) {
  23.                     checkNumber(num);
  24.                 }
  25.             }
  26.             reader.close();
  27.         } catch (IOException e) {
  28.             System.err.println("IOException: " + e.getMessage());
  29.         }
  30.  
  31.     }
  32.  
  33.     private static void checkNumber(String num) {
  34.         String regExDupNumb = "([0-9])\\1+";
  35.         String regExThreeZero = "^[1-9]+[0-9]*[0]{2,}$";
  36.         String regExDupNumb2 = "^(\\d\\d)\\1$";
  37.  
  38.         if (num.length() == 1) {
  39.             System.out.println("1 เลขหลักเเดียว:" + num);
  40.         } else if (getMatcher(num, regExDupNumb)) {
  41.             System.out.println("2 ซ้ำอย่างน้อยสองตัว:" + num);
  42.         } else if (num.length() >= 3 && IsSortNumb(num)) {
  43.             System.out.println("3 เลขเรียง:" + num);
  44.         } else if (num.length() >= 3 && getPalindrome(num)) {
  45.             System.out.println("4 เลขหาบ:" + num);
  46.         } else if (num.length() > 3 && getMatcher(num, regExThreeZero)) {
  47.             System.out.println("5 หลักร้อยหลักพัน:" + num);
  48.         } else if (num.length() == 4 && getMatcher(num, regExDupNumb2)) {
  49.             System.out.println("6 ซ้ำสองคัวสองครั้ง:" + num);
  50.         }
  51.     }
  52.  
  53.     private static boolean IsSortNumb(String num) {
  54.         int length = (num.length()) - 1;
  55.         int valueDesc;
  56.         int valueAsc;
  57.         int value;
  58.         String firstValue;
  59.         boolean result = false;
  60.  
  61.         value = Integer.parseInt(String.valueOf(num.charAt(1)));
  62.         firstValue = String.valueOf(num.charAt(0));
  63.         valueDesc = value + 1;
  64.         valueAsc = value - 1;
  65.         if (firstValue.equals(String.valueOf(valueAsc))) {
  66.             for (int j = 0; j < length; j++) {
  67.                 value = Integer.parseInt(String.valueOf(num.charAt(j + 1)));
  68.                 firstValue = String.valueOf(num.charAt(j));
  69.                 valueAsc = value - 1;
  70.  
  71.                 if (firstValue.equals(String.valueOf(valueAsc))) {
  72.                     result = true;
  73.                 } else {
  74.                     return result = false;
  75.                 }
  76.             }
  77.         } else if (firstValue.equals(String.valueOf(valueDesc))) {
  78.             for (int i = 0; i < length; i++) {
  79.                 value = Integer.parseInt(String.valueOf(num.charAt(i + 1)));
  80.                 firstValue = String.valueOf(num.charAt(i));
  81.                 valueDesc = value + 1;
  82.  
  83.                 if (firstValue.equals(String.valueOf(valueDesc))) {
  84.                     result = true;
  85.                 } else {
  86.                     return result = false;
  87.                 }
  88.             }
  89.         }
  90.         return result;
  91.     }
  92.  
  93.     private static Boolean getPalindrome(String num) {
  94.         String regExPalindrome4 = "^(\\d)(\\d*)\\2\\1$";
  95.         String regExPalindrome3 = "^(\\d)(\\d)\\1$";
  96.         if (num.length() == 3) {
  97.             return getMatcher(num, regExPalindrome3);
  98.         } else if (num.length() == 4) {
  99.             return getMatcher(num, regExPalindrome4);
  100.         }
  101.         return false;
  102.     }
  103.  
  104.     private static Boolean getMatcher(String num, String regExThreeZero) {
  105.         // Create a Pattern object
  106.         Pattern r = Pattern.compile(regExThreeZero);
  107.         // Now create matcher object.
  108.         Matcher m = r.matcher(String.valueOf(num));
  109.  
  110.         return m.matches();
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement