Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为了使用抛出非整数值异常的菜单,我应该使用什么return语句?_Java_Oop_Methods_Exception Handling - Fatal编程技术网

Java 为了使用抛出非整数值异常的菜单,我应该使用什么return语句?

Java 为了使用抛出非整数值异常的菜单,我应该使用什么return语句?,java,oop,methods,exception-handling,Java,Oop,Methods,Exception Handling,我正在做一份待办事项清单,目前正在制作菜单。菜单接收数字1-6用户的输入,并执行与该数字(int)相关的特定任务。这是一个完美的场景,所以我需要菜单能够获取非整数值,并且不会被阻塞,同时向用户显示错误消息。我认为我已经创建了一种有效的方法,可以在不阻塞程序的情况下向用户请求整数,但是我无法确定我的返回语句应该是什么,以便主要使用该方法。我将在如下switch语句中使用它: while (true) { switch (getMenuOption()) {

我正在做一份待办事项清单,目前正在制作菜单。菜单接收数字1-6用户的输入,并执行与该数字(int)相关的特定任务。这是一个完美的场景,所以我需要菜单能够获取非整数值,并且不会被阻塞,同时向用户显示错误消息。我认为我已经创建了一种有效的方法,可以在不阻塞程序的情况下向用户请求整数,但是我无法确定我的返回语句应该是什么,以便主要使用该方法。我将在如下switch语句中使用它:

         while (true) {
        switch (getMenuOption()) {
            case 1:
            etc
这是我对getMenuOption的当前方法。我应该使用什么返回语句,或者是否有更有效的方法来执行此操作

package project1_martinez_adriel;

import java.util.Scanner;

public class getMenuOption {
    public static int getMenuOption() {    
 Scanner input = new Scanner(System.in);
        System.out.println(" 1. Create a new item \n 2. Mark an item as in progress \n 3. Mark an item as completed \n 4. List all to do items \n 5. Remove completed items \n 6. Exit \n What would you like to do? \n ");
        String value = input.nextLine();
        int num;
        try {
            num = Integer.parseInt(value);
            if (!(num == 1 || num == 2 || num == 3 || num == 4 || num == 5 || num == 6)) {
                System.out.println("ERROR! Invalid choice! \nPlease enter a valid choice BETWEEN 1 & 6: ");
            }else if (num == 6){
            System.exit(0);
        }


        } catch (NumberFormatException e) {
            System.out.println("ERROR! Please enter a valid INTEGER between 1 & 6.");
        }

        return //What do I put here!?

    }

把它打扫干净怎么样

if (num < 1 || num > 6) {
   System.out.println("ERROR! Invalid choice!...");
}
switch语句中的代码应处理1和&6之间的选项,包括
6
being
System.exit(0)

我甚至会在开关
default
块中显示错误消息

编辑

num
也应该用一个值初始化,比如

int num = -1;

因此,在经过一些清理、挫折和长时间的工作后,我想到了以下内容,包括切换语句:

Scanner input = new Scanner(System.in);
        boolean validInput = false;
        do {
            System.out.print("Enter an integer: ");
            int num;
            try {
                num = input.nextInt();
                switch (num) {
                  case 1:
                  case 2:
                  case 3:
                  case 4:
                  case 5:
                  case 6: // cascading case statement example
                    validInput = true;
                  break;
                  default:
                    System.out.println("ERROR! Please enter a valid choice BETWEEN 1 & 6 (inclusive): ");
                    num = input.nextInt();
                  break;
                }
            } catch (Exception e) {
                /* input.next() to move the Scanner forward. */
                System.out.println(input.next() + " was not valid input.");
                System.out.println("ERROR! Please enter a valid INTEGER between 1 & 6.");
            }
        } while (!validInput);
        input.close();
    }
}

感谢您的清理,但是如果我在返回中输入num,我会得到一个严重的异常错误。确切地说:线程“main”java.lang.RuntimeException中的异常:不可编译的源代码-变量num可能未在project1_martinez_adriel.getMenuOption.getMenuOption(getMenuOption.java:25)中初始化,project1_martinez_adriel.main(project1_martinez_adriel.java:14)C:\Users\Adriel\AppData\Local\NetBeans\Cache\8.2\executor snippets\run.xml:53:Java返回:1生成失败(总时间:4秒)真的-什么是异常,它是从什么代码引发的。线程“main”中出现异常java.lang.RuntimeException:不可编译的源代码-变量num可能未在project1_martinez_adriel.getMenuOption.getMenuOption(getMenu)中初始化‌​Option.java:25)在project1_martinez_adriel.project1_martinez_adriel.main(Proje‌​ct1_Martinez_Adriel。‌​java:14)C:\Users\Adriel\AppData\Local\NetBeans\Cache\8.2\executor sn‌​ippets\run.xml:53:Java返回:1生成失败(总时间:4秒)
Scanner input = new Scanner(System.in);
        boolean validInput = false;
        do {
            System.out.print("Enter an integer: ");
            int num;
            try {
                num = input.nextInt();
                switch (num) {
                  case 1:
                  case 2:
                  case 3:
                  case 4:
                  case 5:
                  case 6: // cascading case statement example
                    validInput = true;
                  break;
                  default:
                    System.out.println("ERROR! Please enter a valid choice BETWEEN 1 & 6 (inclusive): ");
                    num = input.nextInt();
                  break;
                }
            } catch (Exception e) {
                /* input.next() to move the Scanner forward. */
                System.out.println(input.next() + " was not valid input.");
                System.out.println("ERROR! Please enter a valid INTEGER between 1 & 6.");
            }
        } while (!validInput);
        input.close();
    }
}