¿Cómo solicito el usuario para una entrada indefinidamente sin usar ningún Loops?

GreyishBlack:

No estoy autorizado a utilizar cualquier bucles en mis asignaciones últimamente, que me tiene confundido en esta última misión. Se supone que tengo que pedir al usuario una serie de números enteros, por tiempo indefinido, hasta que entren en un número no entero, entonces informarles de la mayor entero. Este código siguiente, sin embargo, sólo toma en una sola entrada:

public class GreatestNumber {
    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
        int a;
        int g=0;
        System.out.println("Enter several numbers. Enter a non-integer to end.");
        if(in.hasNext()){
        try{a=in.nextInt();
        g=Greatest(a); }
        catch (NumberFormatException e){
            System.out.println("Greatest number in that sequence is "+g);
        }}}
    public static int Greatest(int x){
        int g=0;
        if (x>g){
            g=x;
        }
        return g;
        }
    }
Elliott fresca:

Esa es una gran cantidad de código. Se podría utilizar la recursividad. Definir greatestcomo tomar una Scanner, comprobar si existe una inty recursivo con Math.max(int, int). Me gusta,

public static int greatest(Scanner in) {
    if (in.hasNextInt()) {
        return Math.max(in.nextInt(), greatest(in));
    }
    return Integer.MIN_VALUE;
}

Entonces llamarlo, sólo se necesita algo así como

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("Enter several numbers. Enter a non-integer to end.");
    System.out.println("Greatest number in that sequence is " + greatest(in));
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=282179&siteId=1
Recomendado
Clasificación