找到2D数组中的最大值

时间:2018-01-04 21:14:49

标签: arrays groovy integer

我有一个2D数组,每个元素都是一个字符串,我需要将包含数字的字符串转换为整数。

String[][] weatherData = [["London", "23", "11", "10.1"],["Tokyo","21", "9", "11"], ["Cape Town", "31", "12", "21"]]

每个阵列的第一个元素是城市名称,第二个是最高温度,第三个是最低温度,第四个是降雨量。

我需要将所有数值转换为整数,然后搜索每个数组的第二个元素(最高温度)以找到整个weatherData数组的最高温度并显示该温度。

如果有人能提供帮助那就太棒了!

4 个答案:

答案 0 :(得分:1)

我会将原始的Strings数组转换为具有适当数据类型(整数和浮点数)的对象实例。

从那里你可以更容易地利用数据做事,比如找到温度最高的城市。一种方法是通过高温对对象列表进行排序,然后返回列表的第一个元素。

class Record {
    String name; int high, low; double rainfall
    Record(name, high, low, rainfall) {
        this.name = name
        this.high = high.toInteger()
        this.low = low.toInteger()
        this.rainfall = Double.valueOf(rainfall)
    }
}

String[][] weatherData = [["London", "23", "11", "10.1"],["Tokyo","21", "9", "11"], ["Cape Town", "31", "12", "21"]]

def data = weatherData.collect { new Record(*it) }
def hottest = data.sort({ r1, r2 -> r2.high <=> r1.high}).first()
assert hottest.name == 'Cape Town'

答案 1 :(得分:1)

这个简单的怎么样?

String[][] weatherData = [["London", "23", "11", "10.1"],["Tokyo","21", "9", "11"], ["Cape Town", "31", "12", "21"]]
println weatherData.collect{ it[1] as Integer}.max()

答案 2 :(得分:0)

您不能在字符串数组中包含int值。 但是你可以做一个比较每个值(string.toInteger())并返回最高值的循环。

答案 3 :(得分:-1)

您可以使用此代码转换为整数,然后在该循​​环之后转换为最大温度

function Animal(name) {
  this.name = name;

  this.walk = function() {
    console.log( "walk " + this.name );
  };

}

// Animal.prototype.walk = function() {   //// we can not use this trik and 
//    console.log( "walk " + this.name ); //// delete this.walk function in 
//}                                       //// constructor


function Rabbit(name) {
  Animal.apply(this, arguments);
}

Rabbit.prototype = Object.create(Animal.prototype);
Rabbit.prototype.constructor = Rabbit;

Rabbit.prototype.walk = function() {
  console.log( "jump " + this.name );
};

var rabbit = new Rabbit("Rabbit");
rabbit.walk(); // for now we get "walk Rabbit". But need - "jump Rabbit"

More Methods to Convert Click here