整数的分隔列表

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)

【讨论】:

以上是关于整数的分隔列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串和整数分隔到列表中[关闭]

将由空格分隔的整数字符串更改为 int 列表

正则表达式从逗号分隔列表中删除连续重复(整数和/或浮点数)

正则表达式匹配两个或多个逗号分隔的整数

逗号分隔的文本文件到通用列表

将逗号分隔的字符串转换为列表