返回信息流String [] s1 = {"1", "2", "3", "4"};
String [] s2 = {"5", "6", "7", "8"};
String [] s3 = {"9", "10", "11", "12"};
String s4 = new String[4];
我想利用s1 s2 s3把s4打造成s4 = {"15", "18", "21", "24"}, 该如何操作。
这是一条镜像帖。来源:北邮人论坛 / java / #37147同步于 2014/12/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
请教个字符串数组处理问题
byrdezyp
2014/12/17镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 icyfox 的大作中提到: 】
: ...
: for i 0 to 3{
: s4[i] = s1[i] + s2[i] + s3[i];
: ...................
这样加出来不是{"159", "2610", "3711", "4812"}吗?
(Integer.parse(s) ....... ) + "";
【 在 byrdezyp (zhangyc) 的大作中提到: 】
: 这样加出来不是{"159", "2610", "3711", "4812"}吗?
炫耀一下Scala
val a = Seq("1", "2", "3", "4")
val b = Seq("5", "6", "7", "8")
val c = Seq("9", "10", "11", "12")
val d = for(((x, y), z) <- ((a zip b) zip c)) yield Seq(x,y,z).map(_.toInt).sum.toString
// 还有更简单的:
val d2 = Seq(a,b,c).transpose.map(_.map(_.toInt).sum.toString)
我擦底下那是啥
one line xxx?
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: 炫耀一下Scala
: [code=scala]
: val a = Seq("1", "2", "3", "4")
: ...................
【 在 icyfox 的大作中提到: 】
: 我擦底下那是啥
: one line xxx?
:
就是几个函数的合用。
transpose, 把二维数组转置(行列互换),这样可以把同一列放在一起。
map:把一个函数应用到所有元素。可以多级map联用,用于多维数组
toInt和toStr就是整数和字符串互相转换了。
sum用于求和。
所以,就是
Seq(a,b,c).transpose.map(row => row.map(elem => elem.toInt).sum.toString)
换一种写法
val matrixByRow = Seq(a,b,c)
val matrixByColumn = matrixByRow.transpose
val result = for (columnOfStrings <- matrixByColumn) yield {
val columnOfInts = for (elem <- columnOfStrings) yield elem.toInt
val columnSum = columnOfInts.sum
val sumAsString = columnSum.toString
sumAsAtring // for语句里边的返回值
}
【 在 byrdezyp 的大作中提到: 】
: String [] s1 = {"1", "2", "3", "4"};
: String [] s2 = {"5", "6", "7", "8"};
: String [] s3 = {"9", "10", "11", "12"};
: ...................
是这样吗?
import java.util.*;
public class Test
{
public static void main(String args[])
{
String s1[] = {"1","2","3","4"};
String s2[] = {"5","6","7","8"};
String s3[] = {"9","10","11","12"};
String s4[] = new String[4];
int j;
for(int i = 0 ; i < s1.length; i++)
{
j = Integer.parseInt(s1[i]) + Integer.parseInt(s2[i]) + Integer.parseInt(s3[i]);
s4[i] = String.valueOf(j);
}
System.out.println(Arrays.toString(s4));
}
}
这样也可以
public class Test
{
public static void main(String args[])
{
String s1[] = {"1","2","3","4"};
String s2[] = {"5","6","7","8"};
String s3[] = {"9","10","11","12"};
String s4[] = new String[4];
int j;
for(int i = 0 ; i < s1.length; i++)
{
j = s1[i].charAt(0)-'0' + s2[i].charAt(0)-'0' + s3[i].charAt(0)-'0';
s4[i] = String.valueOf(j);
}
System.out.println(Arrays.toString(s4));
}
}
【 在 sun111 的大作中提到: 】
: 是这样吗?
: import java.util.*;
: public class Test
: ...................