[伙计们,我的问题是弄清楚如何将扫描仪对象中的整数附加到数组中。需要注意的是,一旦整数小于0,扫描仪应停止获取整数值。换句话说,无论输入数组有多长,一旦扫描仪检测到负值,扫描仪都应停止获取整数值。 此问题使用的是Java语言。
从那里,它应该打印出输入的数组。
示例:
当输入为]时>
12 22 22 23 25 -1
它应该立即将扫描仪停止在-1并输出以下数组:
12 22 22 23 24 -1
我尝试过的内容
由于无法为标准数组分配固定大小的数组,所以我使用了数组列表,它可以自由地从扫描程序对象中附加尽可能多的值。一旦确定了这一步骤,便对所有输入的整数进行了简单的用户验证,如下所示:
public static void main(String[] args) { // Initiate scanner and a new array Scanner scnr = new Scanner(System.in); ArrayList<Integer> userValues = new ArrayList<Integer>(); System.out.print("Enter numbers: "); // While the scanner reads an integer, add integers to the array list while (scnr.hasNextInt()) { userValues.add(scnr.nextInt()); } // Print out the array list System.out.println(userValues); }
顶部的输入和输出将是这样。输入
1 2 3 45 32 1L
输出
[1、2、3、45、32、1]
这仅适用于基本整数验证,并且停止在数组中输入字符串或其他数据类型。我似乎无法弄清楚如何停止扫描程序对象并存储整个数组。以下代码是我尝试解决的问题:
public static void main(String[] args) { // Initiate scanner and new array Scanner scnr = new Scanner(System.in); ArrayList<Integer> userValues = new ArrayList<Integer>(); boolean isPositive = true; System.out.print("Enter numbers: "); // TODO: Once the user enters a value less than 0, break the loop while(scnr.hasNextInt() && isPositive) { if(scnr.nextInt() < 0) { isPositive = false; } else { userValues.add(scnr.nextInt()); } } System.out.println(userValues); }
在失败的尝试中,这不起作用,并且给了我奇怪的输出,我无法忍受。
输入
1 23 45 -1-1
输出
[[23,-1]
感谢您的帮助。
问题大家好,我的问题是弄清楚如何将扫描仪对象中的整数附加到数组中。需要注意的是,一旦整数小于...
您两次调用nextInt
,因此它将添加下一个int并跳过一个。而是将其存储在变量中。