在Java中调用上一个方法时出现Try/Catch错误

在Java中调用上一个方法时出现Try/Catch错误,java,try-catch,jgrasp,Java,Try Catch,Jgrasp,使用jGRASP for Mac,我正在为一个java程序编写代码,该程序将首先要求用户输入一个整数[limitNumber],然后计算1和[limitNumber]之间的奇数,并显示这些数字的总和和值。在第一个方法运行后,程序将询问用户是否希望使用新的整数再次运行计算 若要继续,系统会提示用户输入1表示是,0表示否。如果输入了这两个数字中的任何一个,程序运行正常,但我很难合并另一个try/catch,它将特别关注1和0,并为输入的任何其他值抛出异常消息 代码如下:我试图找出的try/catch

使用jGRASP for Mac,我正在为一个java程序编写代码,该程序将首先要求用户输入一个整数[limitNumber],然后计算1和[limitNumber]之间的奇数,并显示这些数字的总和和值。在第一个方法运行后,程序将询问用户是否希望使用新的整数再次运行计算

若要继续,系统会提示用户输入1表示是,0表示否。如果输入了这两个数字中的任何一个,程序运行正常,但我很难合并另一个try/catch,它将特别关注1和0,并为输入的任何其他值抛出异常消息

代码如下:我试图找出的try/catch在doAgain()方法中

import java.util.Scanner//来自SCANNER类的预写代码
公共类sumOddsPetrantoni{
公共静态整数;
publicstaticvoidmain(字符串args[])//用于调用其他
//方法
{ //
getLimitNumber();//用户输入要用作最大限制的数字
//
calcSumPrint();//在1和限制数之间计算奇数
//
doAgain();//询问用户是否要重复此过程
//是:返回getLimitNumber方法
//否:终止程序
//
}//主方法结束
公共静态无效getLimitNumber(){
布尔完成=假;
扫描仪输入=新扫描仪(System.in);
while(完成!=真){
试一试{
System.out.print(“让我们添加一些奇数!”);
系统输出
.print(“\n请以整数形式输入限制号:”);
limitNumber=input.nextInt();//用于输入整数的方法
完成=正确;
}//结束-重试部分
捕获(异常消息){
input.nextLine();
System.out.println(“\n您知道什么是整数吗?”);
System.out.println(“程序抛出”+消息
+“给我留言,不是一个真正的整数。”);
System.out.println(“请重试。\n”);
}//结束-捕捉段
}//结束时循环
}//END-GET LIMIT NUMBER方法
public static void calcSumPrint(){//START-CALC SUM PRINT METOD
整数和=0;
int ctr=0;

对于(ctr=1;ctr,您可以在doAgain()方法的和处执行以下操作:


为什么不使用else子句并重新启动该方法呢

if(ans == 1)
  {
  System.out.println("\nLet's rock and roll!");
  getLimitNumber();
  calcSumPrint();
  doAgain();
  }
else if(ans == 0)
  {
  System.out.println("Fine, I see how it is...");
  } 
else {
  System.out.println("What you talkin bout, Willis");
  doAgain();
 }
import java.util.InputMismatchException;
导入java.util.Scanner;//从Scanner类预写的代码
公共类sumOddsPetrantoni{
公共静态整数;
publicstaticvoidmain(字符串args[])//用于调用其他
//方法
{ //
getLimitNumber();//用户输入要用作最大限制的数字
//
calcSumPrint();//在1和限制数之间计算奇数
//
doAgain();//询问用户是否要重复此过程
//是:返回getLimitNumber方法
//否:终止程序
//
}//主方法结束
公共静态无效getLimitNumber(){
布尔完成=假;
扫描仪输入=新扫描仪(System.in);
while(完成!=真){
试一试{
System.out.print(“让我们添加一些奇数!”);
系统输出
.print(“\n请以整数形式输入限制号:”);
limitNumber=input.nextInt();//用于输入整数的方法
完成=正确;
}//结束-重试部分
捕获(异常消息){
input.nextLine();
System.out.println(“\n您知道什么是整数吗?”);
System.out.println(“程序抛出”+消息
+“给我留言,不是一个真正的整数。”);
System.out.println(“请重试。\n”);
}//结束-捕捉段
}//结束时循环
}//END-GET LIMIT NUMBER方法
public static void calcSumPrint(){//START-CALC SUM PRINT METOD
整数和=0;
int ctr=0;

对于(ctr=1;ctr JavaScript与Java无关。删除标记这对数字非常有效,但在键入字母时会引发相同的异常错误,数字与字母是否会有不同的异常?@NickPetrantoni会引发什么?想再次尝试吗?(1继续,0退出):线程“main”中的D异常java.util.Scanner.throwFor(Scanner.java:840)处java.util.Scanner.next(Scanner.java:1461)处java.util.Scanner.nextInt(Scanner.java:2091)处java.util.Scanner.nextInt(Scanner.java:2050)处sumOddsPetrantoni.doAgain(sumOddsPetrantoni.java:76)处sumOddsPetrantoni.main(sumOddsPetrantoni.java:29)@NickPetrantoni尝试一下..!谢谢兄弟!只需将“if”和“else if”语句移动到try中,现在一切都正常运行。欢迎@NickPetrantoni签出getInt()方法,它将执行递归调用,直到读取正确的no为止..)@如果我的答案解决了你的问题…别忘了标记为正确答案…:)
throw new IllegalArgumentException(ans + " is not allowed value. Only 0 or 1 is allowed");
if(ans == 1)
  {
  System.out.println("\nLet's rock and roll!");
  getLimitNumber();
  calcSumPrint();
  doAgain();
  }
else if(ans == 0)
  {
  System.out.println("Fine, I see how it is...");
  } 
else {
  System.out.println("What you talkin bout, Willis");
  doAgain();
 }
import java.util.InputMismatchException;
import java.util.Scanner; //PRE-WRITTEN CODE FROM SCANNER CLASS

public class sumOddsPetrantoni {

    public static int limitNumber;

    public static void main(String args[]) // MAIN METHOD USED TO CALL OTHER
                                            // METHODS
    { //
        getLimitNumber(); // USER INPUTS NUMBER TO BE USED AS MAX LIMIT
                            //
        calcSumPrint(); // COMP CALCS ODD #S BETWEEN 1 AND LIMIT NUMBER
                        //
        doAgain(); // ASKS USER IF THEY WANT TO REPEAT THE PROCESS
                    // YES: RETURNS TO getLimitNumber METHOD
                    // NO: TERMINATES PROGRAM
                    //
    } // END OF MAIN METHOD

    public static void getLimitNumber() {

        boolean done = false;

        Scanner input = new Scanner(System.in);

        while (done != true) {
            try {
                System.out.print("Let's add some odd numbers!");
                System.out
                        .print("\nPlease enter the limit number as an integer: ");
                limitNumber = input.nextInt(); // METHOD USED TO INPUT INTEGER
                done = true;
            } // END - TRY SECTION
            catch (Exception message) {
                input.nextLine();
                System.out.println("\nDo you know what an integerer is?");
                System.out.println("The program threw a " + message
                        + " message at me, NOT a real integer.");
                System.out.println("Please try again.\n");

            } // END - CATCH SECTION
        } // END - WHILE LOOP

    } // END - GET LIMIT NUMBER METHOD

    public static void calcSumPrint() { // START - CALC SUM PRINT METOD

        int sum = 0;
        int ctr = 0;
        for (ctr = 1; ctr <= limitNumber; ctr += 2)
            // START - FOR LOOP
            sum = sum + ctr;
        {
            System.out.println("\nThe sum of the odd numbers between 1 and "
                    + limitNumber + " is " + sum + ".");
        } // END - FOR LOOP

    } // END - CALC SUM PRINT METHOD

    public static int getInt(){
        Scanner input = new Scanner(System.in);
        int ans;
        try {

            ans = input.nextInt();
            return ans;
         }
        catch(Exception e){
            System.out.println("Try Again");
            ans = getInt();
        }
        return ans;
    }
    public static void doAgain() { // START - DO AGAIN METHOD

        int ans;
        Scanner input = new Scanner(System.in);
        System.out
                .println("That was aewsome! \nWant to give it another shot? \n(1 to Continue, 0 to Quit): ");

             ans = getInt();

        if (ans == 1) {
            System.out.println("\nLet's rock and roll!");
            getLimitNumber();
            calcSumPrint();
            doAgain();
        }
        else if (ans == 0) {
            System.out.println("Fine, I see how it is...");
        }else{
            throw new IllegalArgumentException("Oops! that's not fair input must be 0 or 1");
        }



    } // END - DO AGAIN METHOD

}