Java 如何在我的代码中添加try,catch语句以只接受整数值?

Java 如何在我的代码中添加try,catch语句以只接受整数值?,java,Java,我正在创建一个JOptionPane对话框,从用户那里获取输入,以选择他们想要购买的蛋糕类型,但我只想输入一个整数值。我对java编程非常陌生,需要使用try,catch来获得整数值的帮助 我已经创建了“Cakes[]”数组来存储和检索蛋糕的味道、价格和剩余蛋糕的数量 do { do { String userinput = JOptionPane.showInputDialog(null, "Enter your choice of cake:" +

我正在创建一个JOptionPane对话框,从用户那里获取输入,以选择他们想要购买的蛋糕类型,但我只想输入一个整数值。我对java编程非常陌生,需要使用try,catch来获得整数值的帮助

我已经创建了“Cakes[]”数组来存储和检索蛋糕的味道、价格和剩余蛋糕的数量

do {

    do {
        String userinput = JOptionPane.showInputDialog(null, "Enter your choice of cake:"
        + "\n" + "1." + Cakes[0].getflavorofcake() + "(" + Cakes[0].getpriceofcake() + "cents" + ")" + "    no. of cakes available:" + Cakes[0].getnofcaksleft()
        + "\n" + "2." + Cakes[1].getflavorofcake() + "(" + Cakes[1].getpriceofcake() + "cents" + ")" + "      no. of cakes available:" + Cakes[1].getnofcaksleft()
        + "\n" + "3." + Cakes[2].getflavorofcake() + "(" + Cakes[2].getpriceofcake() + "cents" + ")" + "            no. of cakes available:" + Cakes[2].getnofcaksleft()
        + "\n" + "4." + Cakes[3].getflavorofcake() + "(" + Cakes[3].getpriceofcake() + "cents" + ")" + "        no. of cakes available:" + Cakes[3].getnofcaksleft()
        + "\n" + "5." + Cakes[4].getflavorofcake() + "(" + Cakes[4].getpriceofcake() + "cents" + ")" + "          no. of cakes available:" + Cakes[4].getnofcaksleft(), "mini cake shop", JOptionPane.QUESTION_MESSAGE);

        choiceofcake = Integer.parseInt(userinput);

        showthatthereisnocakesleft(choiceofcake);//Method called to show user that the choiceofcake chosen is no longer available

    } while (Cakes[choiceofcake - 1].getnofcaksleft() < 1);

    if (choiceofcake > 5 || choiceofcake < 1) {
    JOptionPane.showMessageDialog(null, "Invalid input! Please enter in the range from  1 to 5", "Error", JOptionPane.ERROR_MESSAGE);
    }
} while (choiceofcake > 5 || choiceofcake < 1);
do{
做{
String userinput=JOptionPane.showInputDialog(null,“输入您选择的蛋糕:”
+“\n”+“1.”+蛋糕[0]。GetFlavofCake()+”(“+Cakes[0]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[0]。getnofcaksleft()
+“\n”+“2.”+蛋糕[1]。GetFlavofCake()+”(“+Cakes[1]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[1]。getnofcaksleft()
+“\n”+“3.”+蛋糕[2]。GetFlavofCake()+”(“+Cakes[2]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[2]。getnofcaksleft()
+“\n”+“4.”+蛋糕[3]。GetFlavofCake()+”(“+Cakes[3]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[3]。getnofcaksleft()
+“\n”+“5.”+蛋糕[4]。GetFlavofCake()+”(“+Cakes[4]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[4]。getnofcaksleft(),“迷你蛋糕店”,JOptionPane。问题消息);
choiceofcake=Integer.parseInt(userinput);
showthatheresnocakesleft(choiceofcake);//调用方法向用户显示所选的choiceofcake不再可用
}while(Cakes[choiceofcake-1].getnofcaksleft()<1);
如果(ChoiceOffCake>5 | | ChoiceOffCake<1){
JOptionPane.showMessageDialog(null,“无效输入!请输入1到5的范围”,“错误”,JOptionPane.Error\u消息);
}
}而(choiceofcake>5 | | choiceofcake<1);

假设您希望循环继续,即使在输入错误的情况下,也可以尝试以下操作:

do {
    String userinput = JOptionPane.showInputDialog(null, "Enter your choice of cake:" +
        "\n" + "1." + Cakes[0].getflavorofcake() + "(" + Cakes[0].getpriceofcake() + "cents" + ")" + "    no. of cakes available:" + Cakes[0].getnofcaksleft() +
        "\n" + "2." + Cakes[1].getflavorofcake() + "(" + Cakes[1].getpriceofcake() + "cents" + ")" + "      no. of cakes available:" + Cakes[1].getnofcaksleft() +
        "\n" + "3." + Cakes[2].getflavorofcake() + "(" + Cakes[2].getpriceofcake() + "cents" + ")" + "            no. of cakes available:" + Cakes[2].getnofcaksleft() +
        "\n" + "4." + Cakes[3].getflavorofcake() + "(" + Cakes[3].getpriceofcake() + "cents" + ")" + "        no. of cakes available:" + Cakes[3].getnofcaksleft() +
        "\n" + "5." + Cakes[4].getflavorofcake() + "(" + Cakes[4].getpriceofcake() + "cents" + ")" + "          no. of cakes available:" + Cakes[4].getnofcaksleft(), "mini cake shop", JOptionPane.QUESTION_MESSAGE);

    choiceofcake = Integer.parseInt(userinput);

    if (choiceofcake > 5 || choiceofcake < 1) {
        JOptionPane.showMessageDialog(null, "Invalid input! Please enter in the range from  1 to 5", "Error", JOptionPane.ERROR_MESSAGE);
    }
    else {
        showthatthereisnocakesleft(choiceofcake);
    }
} while (Cakes[choiceofcake - 1].getnofcaksleft() < 1);
do{
String userinput=JOptionPane.showInputDialog(null,“输入您选择的蛋糕:”+
“\n”+“1.”+蛋糕[0]。GetFlavofCake()+”(“+Cakes[0]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[0]。getnofcaksleft()+
“\n”+“2.”+蛋糕[1]。GetFlavofCake()+”(“+Cakes[1]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[1]。getnofcaksleft()+
“\n”+“3.”+蛋糕[2]。GetFlavofCake()+”(“+Cakes[2]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[2]。getnofcaksleft()+
“\n”+“4.”+蛋糕[3]。GetFlavofCake()+”(“+Cakes[3]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[3]。getnofcaksleft()+
“\n”+“5.”+蛋糕[4]。GetFlavofCake()+”(“+Cakes[4]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[4]。getnofcaksleft(),“迷你蛋糕店”,JOptionPane。问题消息);
choiceofcake=Integer.parseInt(userinput);
如果(ChoiceOffCake>5 | | ChoiceOffCake<1){
JOptionPane.showMessageDialog(null,“无效输入!请输入1到5的范围”,“错误”,JOptionPane.Error\u消息);
}
否则{
显示没有akesleft(choiceofcake);
}
}while(Cakes[choiceofcake-1].getnofcaksleft()<1);

如果您希望循环在一个坏的输入上完全停止,那么考虑在发生这种情况时抛出一个<代码> ILLALGALGUMUMENTRONUT/<代码> .< /P> < P>假设您希望循环继续,即使在输入不好的情况下,也可以尝试类似:

do {
    String userinput = JOptionPane.showInputDialog(null, "Enter your choice of cake:" +
        "\n" + "1." + Cakes[0].getflavorofcake() + "(" + Cakes[0].getpriceofcake() + "cents" + ")" + "    no. of cakes available:" + Cakes[0].getnofcaksleft() +
        "\n" + "2." + Cakes[1].getflavorofcake() + "(" + Cakes[1].getpriceofcake() + "cents" + ")" + "      no. of cakes available:" + Cakes[1].getnofcaksleft() +
        "\n" + "3." + Cakes[2].getflavorofcake() + "(" + Cakes[2].getpriceofcake() + "cents" + ")" + "            no. of cakes available:" + Cakes[2].getnofcaksleft() +
        "\n" + "4." + Cakes[3].getflavorofcake() + "(" + Cakes[3].getpriceofcake() + "cents" + ")" + "        no. of cakes available:" + Cakes[3].getnofcaksleft() +
        "\n" + "5." + Cakes[4].getflavorofcake() + "(" + Cakes[4].getpriceofcake() + "cents" + ")" + "          no. of cakes available:" + Cakes[4].getnofcaksleft(), "mini cake shop", JOptionPane.QUESTION_MESSAGE);

    choiceofcake = Integer.parseInt(userinput);

    if (choiceofcake > 5 || choiceofcake < 1) {
        JOptionPane.showMessageDialog(null, "Invalid input! Please enter in the range from  1 to 5", "Error", JOptionPane.ERROR_MESSAGE);
    }
    else {
        showthatthereisnocakesleft(choiceofcake);
    }
} while (Cakes[choiceofcake - 1].getnofcaksleft() < 1);
do{
String userinput=JOptionPane.showInputDialog(null,“输入您选择的蛋糕:”+
“\n”+“1.”+蛋糕[0]。GetFlavofCake()+”(“+Cakes[0]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[0]。getnofcaksleft()+
“\n”+“2.”+蛋糕[1]。GetFlavofCake()+”(“+Cakes[1]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[1]。getnofcaksleft()+
“\n”+“3.”+蛋糕[2]。GetFlavofCake()+”(“+Cakes[2]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[2]。getnofcaksleft()+
“\n”+“4.”+蛋糕[3]。GetFlavofCake()+”(“+Cakes[3]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[3]。getnofcaksleft()+
“\n”+“5.”+蛋糕[4]。GetFlavofCake()+”(“+Cakes[4]。getpriceofcake()+“美分”+”)“+”可用蛋糕数量:“+Cakes[4]。getnofcaksleft(),“迷你蛋糕店”,JOptionPane。问题消息);
choiceofcake=Integer.parseInt(userinput);
如果(ChoiceOffCake>5 | | ChoiceOffCake<1){
JOptionPane.showMessageDialog(null,“无效输入!请输入1到5的范围”,“错误”,JOptionPane.Error\u消息);
}
否则{
显示没有akesleft(choiceofcake);
}
}while(Cakes[choiceofcake-1].getnofcaksleft()<1);

如果您希望循环在一个坏的输入上完全停止,那么考虑在发生这种情况时抛出一个<代码> ILLALGALGUMUMETRONUT/<代码>。< /P>

包装

choiceofcake = Integer.parseInt(userinput);
试一试

try {
   choiceofcake = Integer.parseInt(userinput);
   if (choiceofcake > 5 || choiceofcake < 1) {
        break;
   }
} catch (NumberFormatException ee) {
    ee.printStatckTrace ();
    continue;
}
试试看{
choiceofcake=Integer.parseInt(userinput);
如果(ChoiceOffCake>5 | | ChoiceOffCake<1){
打破
}
}捕获(NumberFormatException ee){
ee.printStatckTrace();
继续;
}

choiceofcake = Integer.parseInt(userinput);
试一试

try {
   choiceofcake = Integer.parseInt(userinput);
   if (choiceofcake > 5 || choiceofcake < 1) {
        break;
   }
} catch (NumberFormatException ee) {
    ee.printStatckTrace ();
    continue;
}
试试看{
choiceofcake=Integer.parseInt(userinput);
如果(ChoiceOffCake>5 | | ChoiceOffCake<1){
打破
}
}捕获(NumberFormatException ee){
ee.printStatckTrace();
继续;
}

您可以添加try-catch语句,以便在用户输入错误值时,您可以显示其错误,而不是终止程序:

do {
        String userinput = JOptionPane.showInputDialog(null, "Enter your choice of cake:" +
            "\n" + "1." + Cakes[0].getflavorofcake() + "(" + Cakes[0].getpriceofcake() + "cents" + ")" + "    no. of cakes available:" + Cakes[0].getnofcaksleft() +
            "\n" + "2." + Cakes[1].getflavorofcake() + "(" + Cakes[1].getpriceofcake() + "cents" + ")" + "      no. of cakes available:" + Cakes[1].getnofcaksleft() +
            "\n" + "3." + Cakes[2].getflavorofcake() + "(" + Cakes[2].getpriceofcake() + "cents" + ")" + "            no. of cakes available:" + Cakes[2].getnofcaksleft() +
            "\n" + "4." + Cakes[3].getflavorofcake() + "(" + Cakes[3].getpriceofcake() + "cents" + ")" + "        no. of cakes available:" + Cakes[3].getnofcaksleft() +
            "\n" + "5." + Cakes[4].getflavorofcake() + "(" + Cakes[4].getpriceofcake() + "cents" + ")" + "          no. of cakes available:" + Cakes[4].getnofcaksleft(), "mini cake shop", JOptionPane.QUESTION_MESSAGE);


            try{
                    choiceofcake = Integer.parseInt(userinput);
                    if (choiceofcake > 5 || choiceofcake < 1) {
                        JOptionPane.showMessageDialog(null, "Invalid input! Please enter in the range from  1 to 5", "Error", JOptionPane.ERROR_MESSAGE);
                    }
                    else {
                        showthatthereisnocakesleft(choiceofcake);
                    }
            }catch(NumberFormatException e){
                // e.printStackTrace();
            }catch(Exception e){
                // e.printStackTrace();
            }

    } while (Cakes[choiceofcake - 1].getnofcaksleft() < 1);
do{
String userinput=JOptionPane.showInputDialog(null,“输入您选择的蛋糕:”+
“\n”+“1”。+蛋糕[0]。GetFlavofCake()+”(“+蛋糕[0]。getpriceofcake()+“美分”+”)+“蛋糕数量”