检查(使用函数)来自用户的String输入是字符还是整数。 (Java)的

时间:2013-10-11 02:36:29

标签: java string input char int

我已经环顾了很多,但我仍然是java的新手,我发现的所有与String输入和char / number相关的内容对我来说都是丢失的。我已经看到了各种不同的方法来检查它是否是一个数字或字符,但我不确定在我的情况下使用哪一个。我的程序的目标是让用户输入一个数字,然后检查并打印该数字是偶数还是奇数。但是不要限制用户只输入整数。我想把输入变成'char'但是我不能让扫描仪接受它,它想把它转换成字符串。所以现在我正在使用字符串输入,但我不知道如何编写一个函数,我可以调用以检查用户的输入是一个数字或字符。我不希望为我编写整个程序,只是如何解决这个问题。如果我不能得到更多的话,我会回来寻求更多的帮助:) 此外,如果您能够在回复时解释代码的每个部分正在做什么,它可以帮助我理解哪些命令完全正确,那么它会有很多帮助。提前感谢您的回复!

好的,我会发布我的代码,我知道它是各种各样的破碎但我真的不知道下一步该去哪里。我希望用户输入他想要的任何东西,一个字母,符号和& $#或数字。但是如果他输入除了数字之外的任何东西,我希望程序给他一个错误。所以我想我必须让他们输入一个字符串,但我不知道如何使用扫描仪输入字符串我的测试功能。呃,我迷路了。我需要它检查字符串以查看它是字符还是数字,如果是字符,则抛出错误。如果它是一个数字,检查它是偶数还是奇数,然后回答它是哪一个。

public class firsttry2 {

public static void main(String[] args) {

    System.out.print("Enter a character or number. Seriously, though, it is meant to be a number, but you can put whatever you want here. If it isn't a number however, you will get an error message.");


    Scanner in=new Scanner(System.in);


    String input=in.next();
    boolean x=checkevenodd(input);

    //no idea where to go from here and what i have so far is probably badly broken
    //i cant get checkevenodd to work with my scanner input because it's expecting an integer but it's getting a string.









}
public static boolean checkevenodd(int input1){
    if (input1%2==0) return true;
    return false;
}

public static boolean checkchartype(){

} }

3 个答案:

答案 0 :(得分:4)

只需将用户输入传递给Integer.parseInt(String),如果它引发NumberFormatException,则不是Integer。进一步检查字符串的长度,如果是1,则必须是字符。但在你的情况下,不需要检查字符,只需限制整数。如果出现异常,则提示错误输入。

int i = 0;

try
{
    i = Integer.parseInt(readit.next());
}
catch(NumberFormatException e)
{
    e.printStackTrace();
    return;
}

System.out.println(i);

答案 1 :(得分:1)

如果您使用Integer.parseInt()(或Long.parseLong()),您仍然可以限制在32位(或64位)有符号整数范围内的数字。但是你不需要解析一个java原始整数类型来检查用户是否输入了一个"整数",其数学定义是任何整数(任何整数)大小),所以:

以字符串形式阅读您的用户输入,并使用regex为您完成工作:

检查输入是否为"整数" (在数学意义上):

if (input.matches("-?\\d+")) {
    // it's an integer, either negative or positive
}

要检查它的号码是"偶数":

if (input.matches(".*[02468]")) {
    // it is even
}

请注意,String.matches()必须与整个字符串匹配才能返回true,因此无需开始或结束锚点^$ - 他们暗示着。

答案 2 :(得分:0)

首先,您需要告诉您的程序输入应该是什么。为此,您可以定义一个集合 您的输入必须具有或不具有的元素。然后,您可以将用户输入与该集合进行比较,并确定输入是否合法。

标准方法之一是使用正则表达式。您可以谷歌搜索java中的正则表达式。或者可以阅读教程 http://www.vogella.com/articles/JavaRegularExpressions/article.html