Импорт методов в Java - PullRequest
       2

Импорт методов в Java

0 голосов
/ 05 января 2019

Я новичок в Java, и я изучал из книги Мураха, как проверять входные данные. Я сам сделал простое меню ресторана, но когда я импортирую метод для проверки данных из созданного мной служебного класса, он почему-то не работает! (трассировка стека в конце потока).

Но если я установил его в класс menù, он просто работает (только для menùid, но должен также идти и для "spesa"), так что это может быть что-то неправильно в импорте .. или, возможно, я сделал что-то неправильно способ.

Класс полезности ниже:

   class utilità {
    protected static int getint (Scanner sc){
        int t = 0;
        boolean check = false;
            while (check == false) {
                if (sc.hasNextInt())
                {
                    t = sc.nextInt();
                    check = true;
                }
                else {
                    System.out.println("Errore! Si prega di inserire un numero 
    intero.");
                } sc.nextLine();
            } return t;
    }
    }
   //  My menù class :
     protected static void Menù(){
       int menùid;
       System.out.println("Benvenuto nel menù del ristorante!");
       System.out.println("Inserire 0 per uscire :");
       System.out.println("Inserire 1 per ricevere un suggerimento per 
    l'ordinazione :");  
        menùid = utilità.getint(data);
            switch (menùid){
                case 1 :
                    Decidi();
                               System.out.println("Ottima scelta!");
                    break;
                case 0 :
                                System.out.println("Arrivederci e grazie!");
                    break;
            }
       } } <code>
My import : import menùautomatizzato.utilità; import java.util.*;
My main class : mainclass.java (there's only the main method where i use the Menù function)


//Method decidi()
protected static void Decidi () {
       System.out.println("Inserire quanto si pensa di spendere");
       double spesa = data.nextDouble();
       if (spesa >= 50)
           System.out.println("Il ristorante suggerisce : Primo , secondo e contorno per 2 persone");
       else if (spesa <= 50)
           System.out.println("Il ristorante suggerisce : Primo e contorno per 2 persone");
       else if (spesa < 25)
           System.out.println("Il ristorante suggerisce : Primo e contorno per 1 persona");          
   }

Кодовый текст показан на итальянском, потому что это мой язык.

Ошибка, возникающая при выборе опции 1 в менюù, когда пользователь вводит букву вместо числа, а getint должен обрабатывать это исключение:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextDouble(Scanner.java:2413)
    at menùautomatizzato.MenùAutomatizzato.Decidi(MenùAutomatizzato.java:12)
    at menùautomatizzato.MenùAutomatizzato.Menù(MenùAutomatizzato.java:28)
    at menùautomatizzato.mainclass.main(mainclass.java:10)
Java Result: 1

Я был немного глуп, спасибо за JBnizet, который заставил меня понять исправление в комментариях, исправление:

 protected static double getdouble(Scanner sc){
        double d = 0;
        boolean check = false;
            while (check == false) {
                if (sc.hasNextDouble())
                {
                    d = sc.nextDouble();
                    check = true;
                }
                else {
                    System.out.println("Errore! Si prega di inserire un numero.");
                } sc.nextLine();
            } return d;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...