Java 有没有办法传递16位整数?如果是的话,怎么做?

Java 有没有办法传递16位整数?如果是的话,怎么做?,java,object,types,constructor,largenumber,Java,Object,Types,Constructor,Largenumber,我需要让用户输入一个16位数字(没有后缀或引号),然后将该数字传递给一个对象。每当我试图输入这样一个数字时,它被认为是“数据类型int超出范围”。我不希望用户必须以XXXXXXXXXXXXXX L的形式输入它,因为用户可能不知道java需要一个L来表示longs。我也不想在数字周围加引号。在java抛出关于数据类型不匹配或超出范围异常的异常之前,有没有一种方法可以转换这种情况 这能做到吗?我试图构造一个Customer对象,它是Order对象中的一个字段,它本身位于ArrayList order

我需要让用户输入一个16位数字(没有后缀或引号),然后将该数字传递给一个对象。每当我试图输入这样一个数字时,它被认为是“数据类型int超出范围”。我不希望用户必须以XXXXXXXXXXXXXX L的形式输入它,因为用户可能不知道java需要一个L来表示
long
s。我也不想在数字周围加引号。在java抛出关于数据类型不匹配或超出范围异常的异常之前,有没有一种方法可以转换这种情况

这能做到吗?我试图构造一个
Customer
对象,它是
Order
对象中的一个字段,它本身位于
ArrayList orderList
中<代码>“Sam Totman”及其旁边的数字是我正在使用的参数示例

    orderList.get(1).setBuyer(new Customer("Sam Totman", 2112112121121121));
我在这个构造函数中放置数据类型的地方应该放什么
ccn
是信用卡号

    public class Customer
    {
        private String name;
        private *datatype* ccn;

        Customer(String name, *datatype* ccn)
        {
            this.name = name;
            this.ccn = ccn;
        }

使用扫描仪处理输入

    Scanner scan = new Scanner(System.in);      
    long aLong = scan.nextLong(10); 
    ....       
    orderList.get(1).setBuyer(new Customer("Sam Totman", aLong));
顾客

public class Customer
{
    private String name;
    private long ccn;

    Customer(String name, long ccn)
    {
        this.name = name;
        this.ccn = ccn;
    }
}

您将数字文字(编码到程序中)与内部表示混淆。假设输入是扫描仪(System.in)。如何做到这一点?BigInteger数据类型有效吗?如何将
字符串
传递到
?或者如何从
扫描仪中获取
long
,所以把它作为任何一种整数都没有意义。请把它当作一个字符串来读。请你详细说明一下你的代码,并解释一下它是如何解决这个问题的。这将在将来帮助他人
orderList.get(1).setBuyer(new Customer("Sam Totman", new Scanner(System.in).nextLong());