Java BigInteger Parse getBigInteger(Console console, Function validator)

Here you can find the source of getBigInteger(Console console, Function validator)

Description

get Big Integer

License

Open Source License

Declaration

static BigInteger getBigInteger(Console console, Function<BigInteger, Boolean> validator) 

Method Source Code


//package com.java2s;
/*/*from ww w . j a v  a 2 s  . c  o  m*/
 * Copyright (C) 2016 Yadieet SA <yadieet@gmail.com>
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

import java.io.Console;

import java.math.BigInteger;

import java.util.function.Function;

public class Main {
    static BigInteger getBigInteger(Console console, Function<BigInteger, Boolean> validator) {
        if (validator == null)
            validator = value -> true;

        String answer;
        BigInteger value;

        do {
            answer = readLine(console);
            try {
                value = new BigInteger(answer);
                if (validator.apply(value))
                    break;
            } catch (NumberFormatException ignored) {
            }
        } while (true);

        return value;
    }

    static BigInteger getBigInteger(Console console, BigInteger minValue, BigInteger maxValue) {
        if (minValue.compareTo(maxValue) > 0)
            throw new IllegalArgumentException("Invalid min-max value.");

        return getBigInteger(console, value -> value.compareTo(minValue) >= 0 && value.compareTo(maxValue) <= 0);
    }

    private static String readLine(Console console) {
        console.printf("> ");
        return console.readLine().trim();
    }
}

Related

  1. getBigInteger(byte[] payload, int offset, int length)
  2. getBigInteger(Number number)
  3. getBigInteger(Number value)
  4. getBigInteger(String value)
  5. getBigIntegerArrayFromByteArray(byte[] buf)