This source will throw "NullPointerException" at "ans = NumFunctions.arrayConcInt(a);" StringBuilder that Declarationed at thread of "arrayConcInt" has null value.
- //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());
- }
- }