在不使用异常的情况下进行整数检查

Posted

技术标签:

【中文标题】在不使用异常的情况下进行整数检查【英文标题】:Do an integer check without using exceptions 【发布时间】:2014-11-10 17:48:45 【问题描述】:

我使用 Java 的时间很短,所以请耐心等待。我正在开发一个 Java 类简介的程序,我必须在不使用异常的情况下创建一个简单的计算器(无 GUI),但这仍然会捕获输入错误。我能够毫无问题地执行异常处理程序,但这让我发疯!我需要一个替代语句“if (a==char || b==char)” 到目前为止我所拥有的:

import java.util.*;

public class calculator_No_Event 

public static void main(String[] args) 

    // TODO Auto-generated method stub
    int a,b,c;
    char d;
    boolean e;
    Scanner input=new Scanner(System.in);

    try
       
        System.out.print(" Enter the first number: ");
        a=input.nextInt();
        System.out.print("Enter the second number: ");
        b=input.nextInt();
        System.out.print("Enter + or - :");
        String f=input.next();
        d=f.charAt(0);


        if (a==char || b==char)
        
            System.out.println("Error");
           
        else
        
            switch(d)
            
                case '+':
                    c =a+b;
                    System.out.print(a + "+" + b + "=" + c);
                    break;
                case '-':
                    c =a-b;
                    System.out.print(a + "-" + b + "=" + c);
                    break;
            
        

    finally
    
        System.out.println("Thank you.");
    

【问题讨论】:

您的代码甚至无法编译;事先努力至少让它编译。通过完成这项工作并阅读相应的文档,您将在此过程中学到很多东西。 当然它不能编译,这就是问题所在。我的问题在于语句“if (a=char || b=char)”这个语句不起作用。没有 if 语句,程序编译得很好。我正在寻找的是该声明的替代方案。如果我的问题不清楚,我们深表歉意。 【参考方案1】:

您应该在致电Scanner.nextInt() 之前致电Scanner.hasNextInt()Scanner.hasNext()Scanner.next() 也是如此。

【讨论】:

【参考方案2】:

你对这一行有很多误解

if (a = char || b = char)

    我假设您的意思是使用 equal to 运算符,而不是 assignment 运算符 == instead of =

    abc)是ints,如main 中所声明的。所以我们知道它们永远不会是chars,除非你将它们转换为字符——但它们将永远是字符。 intchar 是不同的类型,1 字符可以是任何一种类型 - 所以按你的方式尝试是行不通的。

    谷歌搜索检查字符串是否为数字返回Determine if a String is an Integer in Java,但是,在这种情况下@ElliottFrisch's answer是您可能想要使用的方法。每当您使用新的 Java 类(如Scanner)时,学习查看Documentation 非常有价值,可以让您更好地理解和了解您正在使用的类。 p>

【讨论】:

所以如果用户输入一个字母而不是一个数字,它会捕捉到它吗? 我已链接到多个解决方案 - 我不确定您指的是哪个。但是,是的,在您阅读了这些方法并弄清楚如何实现它之后,它们中的任何一个都可能是一个可能的解决方案。

以上是关于在不使用异常的情况下进行整数检查的主要内容,如果未能解决你的问题,请参考以下文章

Nightwatchjs:如何在不创建错误/失败/异常的情况下检查元素是不是存在

在不移动文件指针的情况下检查文件指针是不是已达到 EOF?

如何在 C# 中检查 File.Delete() 是不是会在不尝试的情况下成功?

cppcheck 可以在不实际检查的情况下进行试运行以列出所有文件吗?

在不启动 PHP 会话的情况下检查?

在不往返授权服务器的情况下检查访问令牌的有效性?