当前位置: 首页 > 知识库问答 >
问题:

尝试捕捉故障//同时放置循环

申屠俊发
2023-03-14

我的程序接受整数输入,然后是一个更大的整数输入,然后是一个字符串。

“输入一个数字:”

“请输入一个更大的数字:”

“输入字符串:”

我试图使用try/catch来捕获输入字符串而不是整数的情况。我有点让代码正常工作,但在执行错误消息后,它跳过下一个int输入问题,直接进入“输入字符串”

我假设我需要一个while循环,但是我很难弄清楚它到底放在哪里,以及使用什么参数。简单地说,(我想)我需要:while(输入!=string)。我只是不知道怎么做。

try {
            System.out.println("Enter a number: ");

            int start = myscanner.nextInt();

            System.out.println("Enter a bigger number: ");

            int end = myscanner.nextInt();

            if (start > end) {
                System.out.println("Error: Start should be smaller.");
            } else {

                int result = sumInt(start, end);
                System.out.println("Result: " + result);
            }
        } catch (InputMismatchException exception) {
            System.out.println("Enter a number, not a string.");

        }
```````````````````````````````````````````````````````````````````````````

共有1个答案

施知
2023-03-14
import java.util.Scanner;
public class Main
{
    public static void main(String[] args) {
       try{
            Scanner myscanner = new Scanner(System.in); 
            int option =1;
            do{
               System.out.println("Enter a number: ");
               String start = myscanner.next();
               boolean sflag= isInteger(start);
               if(!sflag )
               {System.out.println("Error: value not Integer.");  continue;}
               System.out.println("Enter a bigger number: ");
               String end = myscanner.next();
               boolean eflag=  isInteger(end);
              if( !eflag)
                {System.out.println("Error: value not Integer.");  continue;}
              if ( Integer.parseInt(start) > Integer.parseInt(  end)) {
                 System.out.println("Error: Start should be smaller.");
              } else {
                 int result = sumInt( Integer.parseInt( start),  
                 Integer.parseInt( end));
                 System.out.println("Result: " + result);
                 System.out.println("select following option");
                 System.out.println("1. continue");
                 System.out.println("2.exit");
                 option = myscanner.nextInt();
                  //isInteger(option);
             }

        }while(option != 2);

     }catch(Exception e){
        System.out.println(e);
    }
}
public static boolean isInteger( String input ) {
try {
  Integer.parseInt( input );
  return true;
 }
  catch( Exception e ) {
  return false;
 }
 }
      public static Integer sumInt(int start, int end){
      return start + end;
   }
}
 类似资料:
  • 我的项目由一个小图标组成,它在一个尺寸为25×20的网格上移动。我知道我可以用几个if/else块轻松地完成这项工作,但我想了解更多关于错误处理的知识。 我当时想的是使用try-catch,但它根本不会捕获数组索引越界异常或任何:它不会返回“error”或位置,因此它永远不会进入catch块。 我在想这样的伪代码: 实际代码:

  • 我的sp中有一个try catch块,try中只有一个insert语句。捕捉检查错误代码,如果是pk违规,如果是则做更新。但是有时我会得到“当前事务不能被提交,不能支持写入日志文件的操作。回滚事务。 在批处理结束时检测到不可提交的事务。事务被回滚了“,所以我添加了xact_abort,但后来我不断得到”EXECUTE之后的事务计数表明 BEGIN 和 COMMIT 语句的数量不匹配“,我发现了这一

  • 问题内容: 我有一个看起来像这样的循环: 这是方法的主要内容,其唯一目的是返回浮点数数组。我希望此方法在出现错误时返回,因此我将循环放在一个块中,如下所示: 但是后来我也想到将块放入循环中,如下所示: 是否出于某种原因(无论是性能还是其他原因)偏爱一个? 编辑: 共识似乎是将循环放在try / catch中(可能在其自己的方法中)更干净。但是,仍然存在关于哪个更快的争论。有人可以测试一下并返回统一

  • 我在使用这个try/catk语句时遇到了麻烦。我试图用它抛出一条错误消息,上面写着,“请输入一个整数!”如果用户输入一个字母。我使用的第一个成功了,但是它最终需要两行用户输入,而不仅仅是一行,所以它基本上跳过了一个应该问的问题。在那之后,其他的都不起作用,它们只是被完全跳过。我还需要对用户输入做同样的事情,如果用户在字母应该在的地方输入整数,它会抛出一条错误消息,上面写着“请输入字符串!”。我知道

  • 问题内容: 我正在使用Python,每当必须验证函数输入时,我都认为输入有效,然后捕获了错误。 就我而言,我有一个通用类,用于一些不同的事情,其中​​之一是加法。它既作为类又作为a起作用,因此当我向标量添加标量时,应将该常数添加到每个单独的组件中。和加法需要按组件进行加法。 这段代码被用于光线追踪器,因此任何速度提升都很棒。 这是我班的简化版: 我目前正在使用该方法。有人知道更快的方法吗? 编辑:

  • 我希望程序在捕获异常时重新执行 while 循环 - 异常正在接收文本输入。相反,它继续使用下面的代码进行一段时间循环,我希望它再次要求用户输入。 输出: