我试图编写一个程序,它接受一串用户输入,如(5,6,7,8),并将其转换为整数的数组列表,例如{5,6,7,8}。我无法弄清楚我的for循环。任何帮助都会很棒。
String userString = "";
ArrayList<Integer> userInts = new ArrayList<Integer>();
System.out.println("Enter integers seperated by commas.");
userString = in.nextLine();
for (int i = 0; i < userString.length(); i++) {
userInts.add(new Integer(in.nextInt()));
}
答案 0 :(得分:1)
让我们看看这些台词:
String userString = ""
int[] userInt = new int[userString.length()];
此时此userString.length() = 0
因为它不包含任何内容所以这与编写int[] userInt = new int[0]
实例化一个无法容纳任何内容的数组相同。
这也是一个数组而不是arrayList。 arrayList看起来像
ArrayList<Integer> myList = new ArrayList()<Integer>;
答案 1 :(得分:1)
如果您的列表由一位数字组成,您的方法可以正常工作,除非您需要在分配结果数组之前弄清楚字符串中有多少位数。
如果您要处理多位数字,请先在逗号上使用String.split
。这将告诉您需要分配多少个数字。然后浏览字符串数组,并使用Integer.parseInt
方法解析每个数字。
注意:我故意不显示任何代码,因此您不会错过任何有趣的编码。通过阅读文档,您似乎已经掌握了足够的知识来完成这项任务。
答案 2 :(得分:1)
我假设in
是Scanner
。
我没有看到停止的状况。只要你快乐,我就会假设你想继续这样做。
List<Integer> arr = new ArrayList<Integer>();
while(in.hasNext())
arr.add(in.nextInt());
而且,说你知道你会得到10个数字..
int count = 10;
while(count-- > 0)
arr.add(in.nextInt());
答案 3 :(得分:0)
我可以建议不同的输入格式吗?第一行输入将由整数N组成。下一行包含N个空格分隔的整数。
5
3 20 602 3 1
用于接受此输入的代码,您可以使用java.util.Scanner#nextInt()
方法确保只读取有效的整数值。
这种方法的另一个好处是在输入时验证输入,而不是接受字符串并且必须验证和解析它。 String方法提供了许多需要处理的边缘情况。