我想要能够让我的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();
}
}
}
问题内容: 以下代码给出了编译错误,提示“意外运行”: 我知道,如果正常调用函数就可以获取返回值,而无需使用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中 或者
问题内容: 受到一个现已删除的问题的启发;给定带有命名组的正则表达式,是否有类似的方法返回具有命名捕获组的列表而不是列表? 鉴于: 应该改为: 问题答案: