整数的分隔列表
Posted
技术标签:
【中文标题】整数的分隔列表【英文标题】:Delimited List of Integers 【发布时间】:2016-03-22 17:32:15 【问题描述】:这是原来的提示:
编写程序,在命令行从用户那里获取一个以逗号分隔的整数字符串(例如“4,8,16,32,...”),然后将字符串转换为整数数组列表(使用包装类),每个元素包含一个输入整数序列。最后,使用 for 循环将整数输出到命令行,每个都在单独的行上。
import java.util.Scanner;
import java.util.ArrayList;
public class Parser
public static void main(String[] args)
Scanner scnr = new Scanner(System.in);
ArrayList<String> myInts = new ArrayList<String>();
String integers = "";
System.out.print("Enter a list of delimited integers: ");
integers = scnr.nextLine();
for (int i = 0; i < myInts.size(); i++)
integers = myInts.get(i);
myInts.add(integers);
System.out.println(myInts);
我能够将它带到它接受分隔整数列表的位置,但我被困在它的转换部分和 for 循环上,特别是将每个数字打印到单独的行。
【问题讨论】:
使用Integer.parseInt()
将String
转换为Integer
...
对字符串使用 split 方法并循环遍历将解析后的整数 (Integer.parseInt(value)) 添加到您的 ArrayList of Integers 中。
您正在打印整个列表。您应该遍历每个元素并循环打印每个元素。
您的 myInts.size()
为 0,因为列表为空,直到您将某些内容放入其中。
我仍然很困惑在哪里添加我的代码?有什么办法可以让人们澄清事情的去向吗?
【参考方案1】:
转换此字符串的最简单方法是根据逗号将其拆分并将Integer.valueOf
应用于每个元素:
List<Integer> converted = Arrays.stream(integers.split(","))
.map(Integer::valueOf)
.collect(Collectors.toList());
打印它们,假设您必须使用for
循环,只是意味着循环它们并单独打印每个:
for (Integer i : converted)
System.out.println(i);
如果您不是绝对必须使用 for
循环,那么即使不存储到临时列表,也可以使用流更优雅地完成此操作:
Arrays.stream(integers.split(","))
.map(Integer::valueOf)
.forEach(System.out::println);
【讨论】:
【参考方案2】:首先,您可以使用split
方法将输入字符串转换为String[]
:input.split(",")
。这将为您提供一个数组,其中元素是由","
分隔的字符串。
然后,要将 String 转换为 Integer
包装器,您可以使用:
Integer i = Integer.valueOf(str);
Integer i = Integer.parseInt(str)
【讨论】:
【参考方案3】:myInts 为空,您的数据为整数。 我建议你搜索一下函数:split (from String)
【讨论】:
以上是关于整数的分隔列表的主要内容,如果未能解决你的问题,请参考以下文章