El método nextBigDecimal() de la clase java.util.Scanner escanea el siguiente token de la entrada como un BigDecimal. Si el siguiente token coincide con la expresión regular Decimal definida anteriormente, el token se convierte en un valor BigDecimal como si se eliminaran todos los separadores de grupo, se asignaran dígitos que no son ASCII a dígitos ASCII a través de Character.digit y se pasara la string resultante a BigDecimal. (String) constructor.
Sintaxis:
public BigDecimal nextBigDecimal()
Parámetros: La función no acepta ningún parámetro.
Valor de retorno: esta función devuelve el BigDecimal escaneado desde la entrada.
Excepciones: la función lanza tres excepciones como se describe a continuación:
- InputMismatchException: si el siguiente token no es un BigDecimal válido o está fuera de rango
- NoSuchElementException: se lanza si la entrada está agotada
- IllegalStateException: se lanza si este escáner está cerrado
Los siguientes programas ilustran la función anterior:
Programa 1:
// Java program to illustrate the // nextBigDecimal() method of Scanner class in Java // without parameter import java.util.*; public class GFG1 { public static void main(String[] argv) throws Exception { String s = "Gfg 9 + 6 = 12.0"; // create a new scanner // with the specified String Object Scanner scanner = new Scanner(s); while (scanner.hasNext()) { // if the next is a BigDecimal, // print found and the BigDecimal if (scanner.hasNextBigDecimal()) { System.out.println("Found BigDecimal value :" + scanner.nextBigDecimal()); } // if no BigDecimal is found, // print "Not Found:" and the token else { System.out.println("Not found BigDecimal() value :" + scanner.next()); } } scanner.close(); } }
Not found BigDecimal() value :Gfg Found BigDecimal value :9 Not found BigDecimal() value :+ Found BigDecimal value :6 Not found BigDecimal() value := Found BigDecimal value :12.0
Programa 2: Para demostrar InputMismatchException
// Java program to illustrate the // nextBigDecimal() method of Scanner class in Java // InputMismatchException import java.util.*; public class GFG1 { public static void main(String[] argv) throws Exception { try { String s = "Gfg 9 + 6 = 12.0"; // create a new scanner // with the specified String Object Scanner scanner = new Scanner(s); while (scanner.hasNext()) { // if the next is a BigDecimal // print found and the BigDecimal // since the value 60 is out of range // it throws an exception System.out.println("Next BigDecimal value :" + scanner.nextBigDecimal()); } scanner.close(); } catch (Exception e) { System.out.println("Exception thrown: " + e); } } }
Exception thrown: java.util.InputMismatchException
Programa 3: Para demostrar NoSuchElementException
// Java program to illustrate the // nextBigDecimal() method of Scanner class in Java // NoSuchElementException import java.util.*; public class GFG1 { public static void main(String[] argv) throws Exception { try { String s = "Gfg"; // create a new scanner // with the specified String Object Scanner scanner = new Scanner(s); // Trying to get the next BigDecimal value // more times than the scanner // Hence it will throw exception for (int i = 0; i < 5; i++) { // if the next is a BigDecimal, // print found and the BigDecimal if (scanner.hasNextBigDecimal()) { System.out.println("Found BigDecimal value :" + scanner.nextBigDecimal()); } // if no BigDecimal is found, // print "Not Found:" and the token else { System.out.println("Not found BigDecimal value :" + scanner.next()); } } scanner.close(); } catch (Exception e) { System.out.println("Exception thrown: " + e); } } }
Not found BigDecimal value :Gfg Exception thrown: java.util.NoSuchElementException
Programa 4: Para demostrar IllegalStateException
// Java program to illustrate the // nextBigDecimal() method of Scanner class in Java // IllegalStateException import java.util.*; public class GFG1 { public static void main(String[] argv) throws Exception { try { String s = "Gfg 9 + 6 = 12.0"; // create a new scanner // with the specified String Object Scanner scanner = new Scanner(s); // close the scanner scanner.close(); System.out.println("Scanner Closed"); System.out.println("Trying to get " + "next BigDecimal value"); while (scanner.hasNext()) { // if the next is a BigDecimal, // print found and the BigDecimal if (scanner.hasNextBigDecimal()) { System.out.println("Found BigDecimal value :" + scanner.nextBigDecimal()); } // if no BigDecimal is found, // print "Not Found:" and the token else { System.out.println("Not found BigDecimal value :" + scanner.next()); } } } catch (Exception e) { System.out.println("Exception thrown: " + e); } } }
Scanner Closed Trying to get next BigDecimal value Exception thrown: java.lang.IllegalStateException: Scanner closed
Referencia: https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextBigDecimal()