Arrêtez de lire l'entrée standard en Java

voix
1

Le code suivant me donner ce que je veux ce qui est le type de données saisies (int, double ou chaîne) mais, quand je lance le code est comme si elle attend une autre entrée avant qu'il exécutera. J'espère que je suis sur la bonne voie.

ou

Enter some stuff: 43
3
You have entered an integer: 43

Il ne fonctionnera pas jusqu'à ce que je rentre un autre personnage dans ce cas, le 3 ci-dessous 43.

Merci pour la recherche.

    public static void main(String[] args) 
    {
        // variables

        Scanner in = new Scanner(System.in);
        String input;

        // Prompt user for stuff

        System.out.print (Enter some stuff: );

        // input stuff
        input = in.next();

        //determine and read type echo to use
        if (in.hasNextInt())
        {
        System.out.print (You have entered an integer: + input);
        }
        else if (in.hasNextDouble())
        {
        System.out.print (You have entered a double: + input);
        }
        else if (in.hasNextLine())
        {
        System.out.print (You have entered a string: + input);
        }



    }
Créé 20/10/2018 à 02:57
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

J'utiliser tryet catchpour fonder le droit type de données. Ne pas utiliser de multiples entrées , sinon vous obtiendrez l'erreur que vous avez, utilisez juste in.next()une fois, puis gérer la valeur comme ci - dessous:

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String input;

    // Prompt user for stuff

    System.out.print ("Enter some stuff: ");

    // input stuff
    input = in.next();

    //determine and read type echo to use
    try {
        int v = Integer.parseInt(input);
        System.out.print ("You have entered an integer: " + input);
    } catch (NumberFormatException nfe1) {
        try {
            double v = Double.parseDouble(input);
            System.out.print ("You have entered a double: " + input);
        } catch (NumberFormatException nfe2) {
            System.out.print ("You have entered a string: " + input);
        }
    }
}

Produit 1:

Enter some stuff: 7
You have entered an integer: 7

Produit 2:

Enter some stuff: 3.0
You have entered a double: 3.0

Produit 3:

Enter some stuff: sfsdfasd
You have entered a string: sfsdfasd
Créé 20/10/2018 à 03:15
source utilisateur

voix
0

Je pense que vous le faites correctement. Si vous voulez connaître le type de données saisies, pourquoi voulez - vous lire en premier? Vous êtes en première lecture et le stockage dans inputvariable et déterminer le type de la prochaine entrée entré. Ainsi, le message est également faux. J'ai modifié votre code pour obtenir une sortie désirée

    public static void main(String[] args) {
    // variables

    Scanner in = new Scanner(System.in);
    String input;

    // Prompt user for stuff

    System.out.print ("Enter some stuff: ");

    // input stuff
    // input = in.next();

    //determine and read type echo to use
    if (in.hasNextInt())
    {
    System.out.println ("You have entered an integer: "+ in.nextInt());
    }
    else if (in.hasNextDouble())
    {
    System.out.println ("You have entered a double: "+ in.nextDouble());
    }
    else if (in.hasNextLine())
    {
    System.out.println ("You have entered a string: "+ in.nextLine());
    }

}
Créé 20/10/2018 à 03:30
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more