首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Scala中添加列表中的数字(初学者)

如何在Scala中添加列表中的数字(初学者)
EN

Stack Overflow用户
提问于 2014-02-14 16:01:49
回答 6查看 214关注 0票数 0

我刚刚开始学习Scala。我想要通过循环添加数字,并想找出最小数字。所以,我做了这个

代码语言:javascript
运行
复制
for(j<-0 until numberOfQuery){
      val z = readLine.split(" ");
      var from = Integer.parseInt(z(0));
      var to = Integer.parseInt(z(1));
      var i=from;
      var getNumber = List[Int](to+1);
      var counter = 0;
      for(i <-from until to+1){
          getNumber.apply(storeElemets(i));
          System.out.println(storeElemets(i));
      }
      System.out.println(getNumber.min);
    }

对于输入10 20 30 40 11 22 33 44 15 50 5,最小数字将是10。但是,它返回java.lang.IndexOutOfBoundsException。所以,

1)在Scala中声明List的正确方法是什么? 2)我的错误是什么?什么是正确的数字加法?

EN

Stack Overflow用户

发布于 2014-02-14 18:20:52

在人们注意到的其他问题之上(可变性与不可变性,分号,不知道storeElemets做了什么,等等)您还选择了一些模棱两可且难以理解的值名称,这些名称与常用术语冲突,从而使代码难以阅读。

从字里行间看起来,storeElemets就是你所谓的“输入”。

我的观点是这样的:

代码语言:javascript
运行
复制
val storeElemets = IndexedSeq(10,20,30,40,11,22,33,44,15,5) //immutable

for(qry <- 0 until numberOfQuery) {
  val elems = readLne split " " //split into an array
  val Array(start, end) = elems take 2 map (_.toInt) //pattern matching

  val stored = (start to end) map storeElemets //also immutable
  //alternatively, this is more efficient in *most* cases...
  val stored = storeElemets drop start take (end-start+1)

  //println is a *side effect*, so we want to isolate it from the other logic
  stored foreach println
  println(stored.min)
}
票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21773799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档