java - 如何摆脱以下程序中的 NumberFormatException?

标签 java arrays try-catch numberformatexception

该程序接受一个整数数组和另一个符号数组,并在使用*符号执行运算后*计算并显示结果。示例:

int Arr[]={1,2,3,4} 
String Sym[]={"+","/","*"}
Result is 4. *[((1+2)/3)*4]

这就是我所做的。

import java.util.*;
public class Array
{
public static void main(String args[])
{
    Scanner sc=new Scanner(System.in);int c=0;
    System.out.println("Enter the size of the array:");
    int l=sc.nextInt();
    int m[]=new int[l];
    String n[]=new String[l-1];
    String s[]=new String[l];
    System.out.println("Enter the integers");
    for(int i=0;i<l;i++)
    {
        m[i]=sc.nextInt();
        s[i]=Integer.toString(m[i]);
    }
    System.out.println("Enter the symbols");
    for(int i=0;i<l-1;i++)
    {
        n[i]=sc.next();
    }
    String st="";
    for(int i=0;i<l;i++)
    {
        if(i<(l-1))
         st=st+s[i]+n[i];
         else
         st=st+s[i];
    }

    System.out.println("String looks like "+st);
    try
    {
      c=Integer.parseInt(st);
    }
    catch(NumberFormatException ex)
    {}
    System.out.println("Answer "+c);
    }
    }

如何使用 try catch 得到答案而不是得到零 或者还有其他方法可以执行相同的程序吗?

最佳答案

只需在 try-catch block 中进行一些更改,如下所示

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int c = 0;
    System.out.println("Enter the size of the array:");
    int l = sc.nextInt();
    int m[] = new int[l];
    String n[] = new String[l - 1];
    String s[] = new String[l];
    System.out.println("Enter the integers");
    for (int i = 0; i < l; i++) {
        m[i] = sc.nextInt();
        s[i] = Integer.toString(m[i]);
    }
    System.out.println("Enter the symbols");
    for (int i = 0; i < l - 1; i++) {
        n[i] = sc.next();
    }
    String st = "";
    for (int i = 0; i < l; i++) {
        if (i < (l - 1))
            st = st + s[i] + n[i];
        else
            st = st + s[i];
    }

    System.out.println("String looks like " + st);
    try {

        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine engine = mgr.getEngineByName("JavaScript");
        c = (int) engine.eval(st);
    } catch (NumberFormatException ex) {
        ex.printStackTrace();
    } catch (ScriptException e) {
        e.printStackTrace();
    }
    System.out.println("Answer " + c);
}

关于java - 如何摆脱以下程序中的 NumberFormatException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49420694/

相关文章:

php - 为什么使用 "finally"关键字?

java - if 条件中的字符串比较总是出错

php - Mysql搜索以逗号分隔的字符串

python - 差平方和 - NumPy/Python

javascript - 如何检查二维数组的行和列的长度是否相等?

javascript - 无法在 Safari 中捕获 window.open() 异常

c++ - c++ try try catch的所有命中命中终止于C++ 11 14和17

java - 管理切换按钮的状态

java - 二维图像中的 Gabor 小波

java - 如何使用属性文件在 log4j.xml 中设置值?