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

Filenotfound返回捕获

梁丘弘
2023-03-14

我想要能够让我的catch请求用户输入文件名,直到文件名有效为止,有没有人能给我一个建议,如何安排我的代码做到这一点?

import java.io.File;

导入java.io.FileNotFoundException;导入java.util.scanner;

public class Requierment2{public static void main(String[]args){

String filename ="";
Scanner keyboard = new Scanner(System.in);
System.out.println ("Press K for keyboard or F to read expressions from a file");
String user_input=keyboard.nextLine();
String [] ui = user_input.split(" ");
    if (ui[0].equals( "k") | ui[0].equals("K")) {
            while (true){
                System.out.println("Please Enter a Post-Fix Expression (eg: 5 2 *)");
                String postfix=keyboard.nextLine();
                String [] elements =postfix.split(" ");


                if (postfix.equals("")){
                    System.out.println("Application Closed");
                    keyboard.close();
                    System.exit(0);
                    }
                if (elements.length >=3){
                    try{
                        float num1, num2;
                        num1 = Float.parseFloat(elements[0]);
                        num2 = Float.parseFloat(elements[1]);

                            if(elements[2].equals("+")){
                                System.out.println("Total: "+(num1 + num2));
                            }
                            else if(elements[2].equals("*")){
                                System.out.println("Total: "+(num1 * num2));
                            }
                            else if(elements[2].equals("/")){
                                System.out.println("Total: "+(num1 / num2));
                            }
                            else if(elements[2].equals("-")){
                                System.out.println("Total: "+(num1 - num2));
                            }
                            else{
                                System.out.println("Error Invalid Expression: "+ postfix);
                            }
                    }
                    catch(NumberFormatException e){
                        System.out.println("Error Invalid Expresion: "+postfix);
                        }
                    }
                    else if  (elements.length <3) {
                        System.out.println("Error Invalid Expression: "+ postfix);
                    }               
            }           
        }

    else if (ui[0].equals( "f") | ui[0].equals("F"))
        {
        try{
            System.out.println("Please enter file name eg: Demo.txt");
            filename= keyboard.nextLine();
            Scanner s = new Scanner(new File(filename));
            System.out.println("Processing "+ filename);
            System.out.println( );
            String line= s.nextLine();
            String array []= line.split(" ");
            if (array.length >=3){
                try{
                    float array1, array2, total1, total2, total3, total4,  array3 , array5;
                    array1 = Float.parseFloat(array[0]);
                    array2 = Float.parseFloat(array[1]);
                    total1 = array1 + array2;
                    total2 = array1 * array2;
                    total3 = array1 / array2;
                    total4 = array1 - array2;

                        if(array[2].equals("+")){
                            System.out.println("Postfix Expression: " + line );
                            System.out.println(array1 + " " +  array[2] + " " +  array2 + " = " + total1);
                            System.out.println( );
                        }
                        else if(array[2].equals("*")){
                            System.out.println("Postfix Expression: " + line );
                            System.out.println(array1 + " " +  array[2] + " " +  array2 + " = " + total2);
                            System.out.println( );
                        }
                        else if(array[2].equals("/")){
                            System.out.println("Postfix Expression: " + line );
                            System.out.println(array1 + " " +  array[2] + " " +  array2 + " = " + total3);
                            System.out.println( );
                        }
                        else if(array[2].equals("-")){
                            System.out.println("Postfix Expression: " + line );
                            System.out.println(array1 + " " + array[2]+ " " +  array2 + " = " + total4);
                            System.out.println( );
                        }
                        else{
                            System.out.println(" Error Invalid Expression: "+ line);
                            System.out.println( );
                        }
                }
                catch(NumberFormatException e){
                    System.out.println(" Error Invalid Expresion: "+ line);
                    System.out.println( );
                    }
                }
                else if  (array.length <3) {
                    System.out.println(" Error Invalid Expression: "+ line);
                    System.out.println( );
                }
                while ( s.hasNext() ) {
                    String nl= s.nextLine();
                    String ar []= nl.split(" ");
                    if (ar.length >=3){
                        try{
                            float ar1, ar2, total1, total2, total3, total4; 
                            ar1 = Float.parseFloat(ar[0]);
                            ar2 = Float.parseFloat(ar[1]);
                            total1 = ar1 + ar2;
                            total2 = ar1 * ar2;
                            total3 = ar1 / ar2;
                            total4 = ar1 - ar2;

                                if(ar[2].equals("+")){
                                    System.out.println("Postfix Expression: " + nl );
                                    System.out.println(ar1 + " " +  ar[2] + " " +  ar2 + " = " + total1);
                                    System.out.println( );
                                }
                                else if(ar[2].equals("*")){
                                    System.out.println("Postfix Expression: " + nl );
                                    System.out.println(ar1 + " " +  ar[2] + " " +  ar2 + " = " + total2);
                                    System.out.println( );
                                }
                                else if(ar[2].equals("/")){
                                    System.out.println("Postfix Expression: " + nl );
                                    System.out.println(ar1 + " " +  ar[2] + " " +  ar2 + " = " + total3);
                                    System.out.println( );
                                }
                                else if(ar[2].equals("-")){
                                    System.out.println("Postfix Expression: " + nl );
                                    System.out.println(ar1 + " " + ar[2]+ " " +  ar2 + " = " + total4);
                                    System.out.println( );
                                }
                                else{
                                    System.out.println(" Error Invalid Expression: "+ nl);
                                    System.out.println( );
                                }
                        }
                        catch(NumberFormatException e){
                            System.out.println(" Error Invalid Expresion: "+ nl);
                            System.out.println( );
                            }
                        }
                        else if  (array.length <3) {
                            System.out.println(" Error Invalid Expression: "+ nl);
                            System.out.println( );
                        }

                }

        }

        catch (FileNotFoundException e){
            System.out.println("Error: That file does not exist, please re-enter: ");
            filename= keyboard.nextLine();
            Scanner s ;

          }
    }
    else{
        System.out.println("Neither K or F have been entered");
        System.out.println("System Terminated");
        keyboard.close();
    }

}

}

共有1个答案

居乐池
2023-03-14
  1. 打印规则中所需的文件名类型的更全面示例。
  2. 使用'visitor'模式实现例外规则。
 类似资料:
  • 问题内容: 以下代码给出了编译错误,提示“意外运行”: 我知道,如果正常调用函数就可以获取返回值,而无需使用goroutine。或者我可以使用频道等 我的问题是为什么不能从goroutine中获取像这样的返回值。 问题答案: 严格的答案是您 可以 做到。这可能不是一个好主意。下面的代码可以做到这一点: 这将产生一个新的goroutine,它将进行计算,然后将结果分配给。问题是:您将如何使用原始go

  • 我有一个返回< code>List的方法。现在我想知道如何正确放置< code>try/catch块。如果我将< code>return语句放在< code>try中,我会得到错误 并非所有代码路径都返回值 如果我放置在之后(就像我目前所做的那样),即使在之后,它也会返回。那么最好的方法应该是什么? 方法如下:

  • 我已经写了一个节点。使用express框架的jsapi。我正在使用wait和async。我在try-catch块中捕获异步函数。但是,在catch(err)方法中,不会返回err。 在上面的例子中,我故意调用一个不存在的函数,这样它就会抛出一个错误。 我得到的答复如下。它正在命中catch块,但没有将错误添加到数据对象中。 但是,如果我将下面的行移出try catch块。控制台将抛出以下错误。 所

  • 我忙于处理一些以意想不到的方式(对我)响应的代码。它涉及处理Node.jspromise异常。 我修改了下面的函数,这样它所做的就是失败 当我试图调用它并处理这个错误时,问题就出现了。如果我做了下面的事情,它会像我期望的那样工作,函数会失败,并执行返回的捕获,停止最后一个控制台日志的执行 尽管如此,如果我按照如下方式编写函数,它似乎不会返回,它仍然会执行最后一个控制台日志,而不考虑等待时间 如果这

  • 问题内容: 我正在扩展Chrome。好。将tampermonkey脚本转换为chrome扩展程序。我运行它,并在chrome控制台中给出以下错误: 是什么导致此问题? 尝试将我的代码包装在IIFE代码中: 尝试IIFE方法时出现以下错误: 问题答案: 你不能返回,除非你在一个函数中 您可以将所有代码包装在IIFE中 或者

  • 问题内容: 受到一个现已删除的问题的启发;给定带有命名组的正则表达式,是否有类似的方法返回具有命名捕获组的列表而不是列表? 鉴于: 应该改为: 问题答案: