【问题标题】:Reading multiline standard input in J在 J 中读取多行标准输入
【发布时间】:2016-04-11 18:34:33
【问题描述】:

现在我使用这段代码从标准输入读取数据:

print =: 1!:2&2
read =: 1!:1[3

in =. (read-.LR)-.CR

但它只返回一个数字序列,例如输入:

2 3 4 5

输出:

2345

数字的数量未知,但每个都在单独的行中

【问题讨论】:

    标签: io j


    【解决方案1】:

    使用 (1!:1) 读取时,您读取的是字符流。您必须操纵流以获得所需的输入。

    例如。如果要输入行分隔整数的列表,您将读取该列表,然后将其按 LF 拆分,删除 LF,然后转换为整数。您可以使用cut (;._2) 实现前两个步骤,使用do (".) 实现转换:

    in =: ".;._2 (1!:1) 3
    

    如果你想输入一个空格分隔的整数列表,你只需使用do,空格会隐含分割:

    in =: ". LF -.~ (1!:1) 3
    

    在应用". 之前必须删除尾随LF(如果存在),因为do 不能转换特殊字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      相关资源
      最近更新 更多