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();
}