【问题标题】:How to Tell if String input is type int Java [duplicate]如何判断字符串输入是否为 int Java 类型 [重复]
【发布时间】:2016-07-04 08:02:58
【问题描述】:

我正在尝试编写程序,但我的客户可能没有以正确的格式输入信息。如何判断 String 是否是 Java 中的 int(这样我可以抛出我编写的错误消息并允许他们重试)?即,java中是否有一种方法可以让我检查String str是否为int类型?

String input=kb.nextLine();   
if(input.(isInteger method)&&(int)input==otherint)
  do stuff inside here;
else
  do different stuff;

答案应包括所需的导入(如果有)和基本方法。此外,尽可能简单会非常好。如果这实际上是问题的副本,请发布链接(我找了一会儿,但在谷歌或这里找不到任何似乎可以解决我的问题的东西)。

【问题讨论】:

  • 你对类型和类型有误解。 String 永远不是 int,而且您永远不能将 String 转换为 int。您要做的是检查String 是否仅包含数字,然后将其解析为int
  • 说真的,其中一位回答者是否阅读了 Tom 的链接?只需使用该死的kb.nextInt()
  • 我尝试了kb.nextInt(),但是当我尝试输入“asdfghjkl”作为测试时,它引发了输入不匹配错误。我在问是否有办法检查它是否是一个停止接收错误消息的 int - 我只想System.out.println("Error 1d.10.t: That is not an Integer; please enter a valid number.")

标签: java string arraylist int


【解决方案1】:
package main.java;
public class Test {
    public static boolean isNumeric(String s){
        // 11 Because might be negative, but 32bit integer overflow is 
        // 10 characters long.
        if (s.length() > 11) return false;
        int i = 0;
        if (s.startsWith("-")) i++;
        for(; i < s.length(); i++){
            if (!Character.isDigit(s.charAt(i))) return false;
        }
        return true;
    }
    public static void main(String[] args){
        System.out.println(Test.isNumeric("100"));
        System.out.println(Test.isNumeric("aa"));
        System.out.println(Test.isNumeric("12a"));
        System.out.println(Test.isNumeric("1002"));
        System.out.println(Test.isNumeric("-11232"));
        System.out.println(Test.isNumeric("999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"));
        System.out.println(Test.isNumeric("4294967294"));
    }
}

编辑我忘了包括负数。 编辑处理整数溢出的粗略方法。

请注意,这仅适用于整数。正则表达式似乎有点矫枉过正,但不是一个糟糕的解决方案。根据这个问题,您不应该使用异常来控制程序流程:Why not use exceptions as regular flow of control?

【讨论】:

  • 你也会忽略像 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 这样不是 int 的情况
  • @ctst 我添加了一个粗略的方法来处理它。好点。
【解决方案2】:

在类中创建一个方法说 IntegerCheck.java

public Boolean isInteger (String s) 
{
    try
    {
        Integer.parseInt(s);
        return true;

    } catch (Exception e) 
      {
         return false;
      }  
}

然后在你的程序中使用它:

首先导入类:

import <package name>.IntegerCheck;

在需要的函数里面:

IntegerCheck obj=new IntegerCheck();

String input=kb.nextLine();  //Get user input using Scanner or any other method, make sure the return type is string.

if(obj.isInteger(input))
{
  //Success.
}
else
{
  //throw an error message that I write and allows them to retry
}

【讨论】:

    猜你喜欢
    • 2010-09-21
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2015-06-11
    • 2021-03-03
    • 2011-05-31
    • 2010-11-21
    相关资源
    最近更新 更多