Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种方法可以通过说“验证”来验证数据;变量!=int";_Java_If Statement_Int_Conditional Statements_Validation - Fatal编程技术网

Java 有没有一种方法可以通过说“验证”来验证数据;变量!=int";

Java 有没有一种方法可以通过说“验证”来验证数据;变量!=int";,java,if-statement,int,conditional-statements,validation,Java,If Statement,Int,Conditional Statements,Validation,这就是我希望我的代码所说的,以避免在用户选择“Tea”而不是使用相应的整数时出现编译错误 if(appSelection < 1 || appSelection > appetizersArray.length || appSelection != int) if(appSelection开胃菜数组.length | | appSelection!=int) 前两个条件显然是捕获超出范围的数据,但我正在寻找一种方法来指定输入必须是int 如果唯一的选择是试试catch,那就这么说

这就是我希望我的代码所说的,以避免在用户选择
“Tea”
而不是使用相应的整数时出现编译错误

if(appSelection < 1 || appSelection > appetizersArray.length || appSelection != int)
if(appSelection<1 | | appSelection>开胃菜数组.length | | appSelection!=int)
前两个条件显然是捕获超出范围的数据,但我正在寻找一种方法来指定输入必须是int


如果唯一的选择是
试试catch
,那就这么说吧,但我希望有一个更优雅的解决方案。

您可以使用正则表达式。小写字母
\\d
与数字匹配,加上加号表示连续。所以

String regex = "\\d+";
String[] arr = { "Tea", "123" };
for (String str : arr) {
    if (str.matches(regex)) {
        System.out.printf("%s is all digits%n", str);
    } else {
        System.out.printf("%s is NOT all digits%n", str);
    }
}
输出为

Tea is NOT all digits
123 is all digits

这是命令行输入吗?如果是这样,您可以使用Scanner类的nextInt方法()。如果它来自web表单,则您的库应该将该值转换为整数,在这种情况下,您已经知道它是整数,或者它是字符串,您可以调用integer.parseInt(string)。此处的文档:

假设数据以字符串形式出现,那么可以使用try/catch,或者使用一些函数来检查提供的数据是否为有效整数,如下所示:

boolean isValidInt(String s) {
  try {
    Integer.parseInt(s);
  } catch (Exception e) {
    return false;
  }
  return true;
}
然后你可以说:

if(!isValidInt(appSelection)) someError();

希望有帮助

假设这是一个与Java相关的问题,
int
是一个原语。您所引用的操作有一个运算符:
instanceof
。不幸的是,它不适用于基本数据类型。为了使用它,您必须使用包装类(即
Integer
)。因此:

不幸的是,自动装箱不适用于此。您可以执行以下操作:

String value = ???;  // ??? represents some unknown string value.
稍后,您可以尝试将该字符串值转换为整数值:

try
{
    Integer x = new Integer(str);
}
catch (NumberFormatException e)
{
    // The exception will be thrown if the string does not represent a numeric value. For example: a34bc
}
如果变量x的实例化成功,它将保存一个数值。由于Java取消装箱机制,您将能够将“x”传递给某个采用原语
int
的方法。例如:

try
{
    Integer x = new Integer(str);
    int result = addThisValue(x);
}
catch (NumberFormatException e) {// Do something }
...
public int addThisValue(int value) {...}
您将能够安全地将变量
x
传递给该方法

try
{
    Integer x = new Integer(str);
    int result = addThisValue(x);
}
catch (NumberFormatException e) {// Do something }
...
public int addThisValue(int value) {...}