gpt4 book ai didi

java - 从控制台读取多行并将其存储在Java中的数组列表中?

转载 作者:行者123 更新时间:2023-12-02 07:40:58 27 4
gpt4 key购买 nike

任何人都可以帮我编写代码,了解如何从控制台读取多行并将其存储在数组列表中吗?例如,我从控制台的输入是:

12     abc      place1
13 xyz place2

我需要 ArrayList 中的这些数据。

到目前为止我尝试过这段代码:

Scanner scanner = new Scanner(System.in);
ArrayList informationList = new ArrayList<ArrayList>();
String information = "";
int blockSize = 0, count = 1;
System.out.println("Enter block size");
blockSize = scanner.nextInt();
System.out.println("Enter the Information ");
while (scanner.hasNext() && blockSize >= count) {
scanner.useDelimiter("\t");
information = scanner.nextLine();
informationList.add(information);
count++;
}

非常感谢任何帮助。

来自控制台的输入行是字符串和整数的混合

最佳答案

您遇到了一些问题。

首先,ArrayList 的初始化行是错误的。如果您想要一个对象列表,以便可以同时保存整数和字符串,则需要将 Object 放在尖括号内。另外,最好将泛型类型参数添加到变量定义中,而不是仅添加到对象实例化中。

接下来,你的计数变得困惑,因为你将其初始化为 1 而不是 0。我假设“ block 大小”实际上意味着这里的行数。如果这是错误的,请发表评论。

接下来,您不想重置扫描程序正在使用的分隔符,并且您当然不想在循环内执行此操作。默认情况下,扫描程序将根据任何空白来分解 token ,我认为这是您想要的,因为您的数据是由制表符和换行符分隔的。

此外,您不需要在 while 条件中检查 hasNext() 。所有 next*() 方法都会阻塞等待输入,因此不需要调用 hasNext()。

最后,您并没有真正利用扫描仪来做它最擅长的事情,即将 token 解析为您想要的任何类型。我在这里假设每个数据行都以一个整数开头,后面跟着两个字符串。如果是这种情况,只需调用 nextInt(),然后在循环内调用两次 next(),您就会自动将所有数据解析为您需要的数据类型。

总而言之,这是您的代码,其中包含我的所有建议以及一些其他部分以使其运行:

import java.util.ArrayList;
import java.util.Scanner;

public class Example {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Object> list = new ArrayList<>();
System.out.println("Enter block size");
int blockSize = scanner.nextInt();
System.out.println("Enter data rows:");
int count = 0;
while (count < blockSize) {
list.add(scanner.nextInt());
list.add(scanner.next());
list.add(scanner.next());
count++;
}
System.out.println("\nThe data you entered is:");
System.out.println(list);
}
}

关于java - 从控制台读取多行并将其存储在Java中的数组列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com