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