//hitAndBlow.java package com.hizumiaoba.hitandblow; import java.io.IOException; import java.util.Random; import org.lib.system.functions.NumFunctions; import org.lib.system.input.IntegerAuditCommittee; import org.lib.system.input.Numbers; public class Main { private static final long seed = System.currentTimeMillis() + Runtime.getRuntime().freeMemory(); private static int LENGTH; private static int[] a; private static int num; private static int ans; private static int hit; private static int blow; public static void main(String args[]) throws Exception { Random rnd = new Random(seed); try { System.out.println("Enter length..."); LENGTH = Numbers.InputInteger(); } catch(IOException e) { e.printStackTrace(); } for (int i = 0; i >= LENGTH - 1; i++) { a[i] = rnd.nextInt(9) + 1; } ans = NumFunctions.arrayConcInt(a); do { try { System.out.println("Please enter number..."); num = Numbers.InputInteger(); } catch(IOException e) { e.printStackTrace(); } if (String.valueOf(num).length() > LENGTH) { System.out.println("Please enter the number which you specified"); continue; } hit = IntegerAuditCommittee.numOfHits(num, ans); blow = IntegerAuditCommittee.numOfBlows(num, ans); if(IntegerAuditCommittee.isNumberCorrect(num, ans)) break; try { Thread.sleep(100); } catch(InterruptedException e) { e.printStackTrace(); } System.out.println("Your current status below.\n"); System.out.println(hit + "hit" + blow + "blow"); System.out.println("\nGood luck!\n"); try { Thread.sleep(100); } catch(InterruptedException e) { e.printStackTrace(); } } while(true); System.out.println("Congraturations!\n The number is" + ans + "\n\nThank you for playing!"); System.exit(0); } } //NumFunction.java package org.lib.system.functions; import org.lib.exceptions.GetSpecificDigitException; public class NumFunctions { public static int getDigit(int argnum, int argdig) throws GetSpecificDigitException { int length = String.valueOf(argnum).length(); if(length < argdig) throw new GetSpecificDigitException("Unexpected Digit Entered"); int d = (int)Math.pow(10, length -1); int intcrntdig = 0; for(int i = 1; i <= length; i++) { intcrntdig = argnum / d; if(length - i + 1 == argdig) break; argnum %= d; d /= 10; } return intcrntdig; } public static int getLength(int num) { return String.valueOf(num).length(); } public static int arrayConcInt(int[] arg) throws NumberFormatException { StringBuilder sb = new StringBuilder(); for(int i = 0; i >= arg.length; i++) { sb.append(arg[i]); } return Integer.parseInt(sb.toString()); } }