Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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
ArrayList<;整数>;未在Java 8(1.8)中存储用户输入的整数_Java_Arraylist_User Input - Fatal编程技术网

ArrayList<;整数>;未在Java 8(1.8)中存储用户输入的整数

ArrayList<;整数>;未在Java 8(1.8)中存储用户输入的整数,java,arraylist,user-input,Java,Arraylist,User Input,*编辑-已解决:在实例化扫描仪对象之后,我使用了一个分隔符,如下所示: scanner.useDelimiter(""); 在此之前,我尝试了一个类似于以下内容的分隔符(堆栈溢出上提供了确切的代码): ……但效果不太好 谢谢大家。如果您遇到同样的问题,请尝试使用第一个分隔符。如果不起作用,请将JDK升级到13,然后重试 好的,我的目标是让用户输入一个信用卡号,然后我想将其存储在一个整数数组列表中,然后将该列表传递给我的函数,这些函数将执行Luhn算法以验证提供的号码。用户按Enter键后,处理

*编辑-已解决:在实例化
扫描仪对象之后,我使用了一个分隔符,如下所示:

scanner.useDelimiter("");
在此之前,我尝试了一个类似于以下内容的分隔符(堆栈溢出上提供了确切的代码):

……但效果不太好

谢谢大家。如果您遇到同样的问题,请尝试使用第一个分隔符。如果不起作用,请将JDK升级到13,然后重试

好的,我的目标是让用户输入一个信用卡号,然后我想将其存储在一个整数数组列表中,然后将该列表传递给我的函数,这些函数将执行Luhn算法以验证提供的号码。用户按Enter键后,处理开始。这是一个控制台应用程序,没有什么特别之处

除用户输入部分外,所有功能都运行得很好。没有任何用户输入存储到声明的ArrayList中。我在相关的while循环之后插入了一条打印消息,告诉我列表的大小……是的,0。我还将此列表传递到相关while循环之后的自定义
lengthChecker(arraylistlist){}
函数中,它正在打印我的自定义错误消息

我已经在while循环的范围内声明了局部int变量,这并没有多大帮助。我已经尝试将用户的输入作为字符串,并将其存储在
ArrayList列表中
然后解析输入,但效果不是很好(特别是我需要Enter键作为分隔符,以便执行下一步)

不管怎样,这里是有关函数的代码。我是否遗漏了一些明显的东西,还是应该退出编程

    public void userInput() {

        Scanner scanner = new Scanner(System.in);
        List<Integer> list = new ArrayList<Integer>();

        System.out.println("Please input the card-number to be checked then press Enter: ");    

        while(scanner.hasNextInt()) {

            list.add(scanner.nextInt());
        }

        System.out.println("Length of list: " + list.size());


        listLengthChecker(list);
        scanner.close();

  }

public void userInput(){
扫描仪=新的扫描仪(System.in);
列表=新的ArrayList();
System.out.println(“请输入要检查的卡号,然后按Enter:”);
while(scanner.hasNextInt()){
添加(scanner.nextInt());
}
System.out.println(“列表长度:+list.size());
列表长度检查器(列表);
scanner.close();
}

提前谢谢。

我不知道您为解决问题而编写的所有代码的完整上下文,但我可以猜出发生了什么。如果要运行任何用户I/O(如扫描仪),它必须出现在
main
方法中。我只能假设您在类中的
main
方法中运行
userInput()
函数。但是,由于您的
userInput()
函数在其定义中没有
static
关键字,因此在不初始化类的对象的情况下无法访问该函数-但从您的代码中可以看出,该方法无法引用任何对象。添加
static
关键字(即,将方法初始化为
publicstaticvoiduserinput()
),以便能够按照您的意愿运行函数

至于while循环-在Java版本(我使用Java 11)中这是一个很小的差异,但是
while(scanner.hasnetint())
在行尾或按enter键时不会停止为真-只有在插入不能解释为整数的内容(如字符)时才是真的。

此while循环将一直执行,直到输入任何非整数值为止。
输入完所有整数值后,程序将打印列表元素

我看不出这个问题。我在本地测试了这段代码,它成功地将整数添加到arraylist中。我不得不注释掉listLengthChecker(列表)。代码还可以。您输入的具体内容是什么?@rootkonda,谢谢。@mayamar,谢谢,我正在通过键盘将整数输入控制台,然后按Enter键继续。谢谢,@busetekin,我非常感谢您将此组合在一起提供帮助。再次感谢。谢谢你,James L。我编辑了我的原始帖子,包括了我所有的代码,但是我省略了我的Luhn算法版本。与Java11相关的有趣见解(有点吓人),并且只在main中运行I/O。到目前为止,我正在CardValidator卡的构造函数中调用userInput()——我还尝试使用我在main方法中声明的CardValidator类实例调用此函数,但不幸的是,我得到了相同的结果。再次感谢。
    public void userInput() {

        Scanner scanner = new Scanner(System.in);
        List<Integer> list = new ArrayList<Integer>();

        System.out.println("Please input the card-number to be checked then press Enter: ");    

        while(scanner.hasNextInt()) {

            list.add(scanner.nextInt());
        }

        System.out.println("Length of list: " + list.size());


        listLengthChecker(list);
        scanner.close();

  }