Java 数据类型识别

Java 数据类型识别,java,types,Java,Types,我想创建一个Java程序,其中 用户将输入一些内容,输出将显示输入的数据类型。。? 例如: Input: 25 Output: integer Input: ABC Output: string Input: 12.7 Output: float/double. 请帮助我,因为我对如何解决这个问题一无所知一个简单的方法可以这样做;从一些输入字符串开始 如果X可以解析为整数-->则它是一个整数/整数 那你试试看 然后漂浮 然后加倍 如果什么都不起作用,你可能有一根绳子 (对于“解析”,我指的是使

我想创建一个Java程序,其中 用户将输入一些内容,输出将显示输入的数据类型。。? 例如:

Input: 25
Output: integer
Input: ABC
Output: string
Input: 12.7
Output: float/double.

请帮助我,因为我对如何解决这个问题一无所知

一个简单的方法可以这样做;从一些输入字符串开始

  • 如果X可以解析为整数-->则它是一个整数/整数
  • 那你试试看
  • 然后漂浮
  • 然后加倍
  • 如果什么都不起作用,你可能有一根绳子
  • (对于“解析”,我指的是使用方法,例如……传入X;当该方法没有向您抛出异常时,您就知道X是整数/int)

    但是:这种检测在很大程度上取决于您对有效输入的定义;和势映射。因为有无数种解释字符串的方法。它可能不是一个数字;但是给定一个正确的格式字符串。。。可能是时间戳


    因此,第一步是:澄清您的需求!了解您必须支持的潜在输入格式;然后思考它们的“映射”;和一个可能的检查来识别该类型。

    您可以获取一个字符串,并尝试将其作为其他类型进行解析:

    Scanner s = new Scanner(System.in);//allows user input
    input = s.nextLine();//reads user input
    try{//java will try to execute the code but will go to the catch block if there's an exception.
        int inputInt = Integer.parseInt(input);//try to convert input to int
    catch(Exception e){
        e.printStackTrace();//this tell you exactly what went wrong. If you get here, then the input isn't an integer.
    }
    //same with double
    

    这应该适用于您的目的:

    import java.util.Scanner;
    
    public class DataType 
    {
       public static void main(String[] args)
       {
          Scanner in = new Scanner(System.in);
          if(in.hasNextByte(2))
             System.out.println("Byte");
          else if(in.hasNextInt())
             System.out.println("Integer");
          else if(in.hasNextFloat())
             System.out.println("Float");
          else if(in.hasNextBoolean())
             System.out.println("Boolean");
          else if(in.hasNext())
             System.out.println("String");
       }
    }
    
    注意,
    if…else
    语句的顺序在这里非常重要,因为与模式相关的以下集合关系:

  • 所有字节模式都可以是整数
  • 所有整数模式都可以是浮点数
  • 所有浮点模式都可以是字符串
  • 所有布尔值都可以是字符串

  • Scanner
    类中有很多
    hasNext..()
    方法,例如
    biginger
    short
    ,等等。您可以参考类文档以了解更多详细信息。

    查找Strings中的解析数据。可能的副本会精确显示如何执行此操作。现在给您一个提示:永远不要建议新手使用空的catch块。这是非常糟糕的做法@幽灵猫是的,我在想如何确切地解释应该去那里