找到2D数组中的最大值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找到2D数组中的最大值相关的知识,希望对你有一定的参考价值。
我有一个2D数组,每个元素都是一个字符串,我需要将包含数字的字符串转换为整数。
String[][] weatherData = [["London", "23", "11", "10.1"],["Tokyo","21", "9", "11"], ["Cape Town", "31", "12", "21"]]
每个阵列的第一个元素是城市名称,第二个是最高温度,第三个是最低温度,第四个是降雨量。
我需要将所有数值转换为整数,然后搜索每个数组的第二个元素(最高温度)以找到整个weatherData数组的最高温度并显示该温度。
如果有人可以提供帮助那就太棒了!
答案
我会将原始的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'
另一答案
这个简单的怎么样?
String[][] weatherData = [["London", "23", "11", "10.1"],["Tokyo","21", "9", "11"], ["Cape Town", "31", "12", "21"]]
println weatherData.collect{ it[1] as Integer}.max()
另一答案
您不能在字符串数组中包含int值。但是你可以做一个比较每个值(string.toInteger())并返回最高值的循环。
另一答案
您可以使用此代码转换为整数,然后在该循环之后转换为最大温度
// A program to demonstrate the use of stringstream
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string s = "12345";
// object from the class stringstream
stringstream geek(s);
// The object has the value 12345 and stream
// it to the integer x
int x = 0;
geek >> x;
// Now the variable x holds the value 12345
cout << "Value of x : " << x;
return 0;
}
More Methods to Convert Click here
以上是关于找到2D数组中的最大值的主要内容,如果未能解决你的问题,请参考以下文章