异常处理程序 - 在单个println行中打印消息和变量

时间:2016-04-03 17:59:21

标签: java eclipse

我有一点问题需要帮助。

对于此作业(第12课HW9)名称NumberFormatException,我必须在下面执行以下操作

" Calculator.java,是一个简单的命令行计算器。请注意,如果任何操作数是非数字的,程序将终止。使用处理非数字操作数的异常处理程序编写程序。您的程序应显示一条消息,在退出之前通知用户错误的操作数(参见下图)。"

c:\exercise>java Exercise12_01 "4 + 5"

4 + 5 = 9

c:\exercise>java Exercise12_01 "4 - 5"

4 - 5 = -1

c:\exercise>java Exercise12_01 "4x - 5"

错误的输入:4x 因此编码的所有数学部分都已完成,正确且有效,我似乎无法弄清楚的唯一部分是:"显示一条消息,在退出"之前通知用户错误的操作数。输入错误:4x。我需要知道我能做什么不仅显示错误消息,还显示错误输入。它向用户显示错误消息的部分位于

代码的末尾

另外一点我忘了提及。问题是用户可能只得到" N"或" V"错了,我不知道如何只保留错误的变量,而只留下另一个变量 EX:如果用户输入4x - 5(即N - V),我只想发布4x(N)而不是5(V),这样我就可以向用户显示输入错误了

catch(InputMismatchException ex)
{
    System.out.println("Bad input, please correct your operard."); 
} //need to add the input error as well

这里是完整的代码,谢谢

import java.util.InputMismatchException;
import java.util.Scanner;

public class NumberFormatException {

    public static void main(String[] args) 

    {
        Scanner Read = new Scanner(System.in);
        try{
//          System.out.println("What is your number?");
            System.out.println("please enter an equation");
            int n=Read.nextInt();
            char operands;
            operands=Read.next().charAt(0); //reading up till the next space and pulling the first character it read
//          System.out.println("What is your operand?");
//          operands=Read.next().charAt(0);
//      
//              
//          System.out.println("What is a second number?");
            int v=Read.nextInt();
//          System.out.println("The second number you entered was "+v);
            if (operands == '+')
                System.out.println(n+"+"+v+"="+addition(n, v));
            if (operands == '-')
                System.out.println(n+"-"+v+"="+subtraction(n, v));
            if (operands == '*')
                System.out.println(n+"*"+v+"="+multiply(n, v));
            if (operands == '/')
                System.out.println(n+"/"+v+"="+division(n, v));

        }
        catch(InputMismatchException ex)
        {
            System.out.println("Bad input, please correct your operard."); //
        }
    }


        public static int addition(int n, int v){
        return n+v;
    }
    public static int subtraction(int n, int v){
        return n-v;
    }
    public static int multiply(int n, int v){
        return n * v;
    }
    public static int division(int n, int v){
        return n/v;
    }

}

如果你想要>你可以复制并发布到eclipse中。<感谢

PS:如果你觉得你有这个标题和问题的似曾相识,你不是,我不小心在上一篇文章的底部发布了错误的代码,对不起那些家伙,但这里有正确的代码

PS2:好的,底部的用户使用他的代码版本来回答问题,但还有另一个问题。

我有一个问题,是否有办法显示输入。我试图显示4x作为错误以及你修改的打印输出,但它没有出来

System.out.println("输入错误,请更正您的第一个操作数。" + n);

我刚试过但是它要我声明n = 0所以当我这样做的时候,然后:"输入错误,请更正你的第一个操作数。"它把零而不是4x我怎么能解决这个问题,一个字符串转换?拜托,谢谢你

1 个答案:

答案 0 :(得分:0)

有更好的方法来解析输入和检查有效性。但是使用您的代码作为基础,这是您可以做的工作。为每个整数添加一个额外的try / catch子句。

date_default_timezone_set('Asia/Kolkata');
require_once("dompdf/dompdf_config.inc.php");

$tym = date('g:i s');
$filename = 'FAA-8130_3_'.$tym;

ob_start();
require_once 'form.php';
$html = ob_get_clean();
ob_end_clean();

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream($filename. ".pdf", array("Attachment" => 0));

}