【发布时间】:2019-10-13 10:02:28
【问题描述】:
我有 2 个字符串数组
String[] s = {"Light", "Sun", "Sun", "Water"};
String[] ss = {"on", "off", "on", "off"};
我想将其转换为整数数组,以便稍后从我的资源中分配图片。 因此,通过 switch 语句检查字符串以分配特定的整数值:
for(int i = 0; i < s.length; i++)
{
switch (components[i]) {
case "Light":
if (ss[i]=="on")
I.add(1);
else
I.add(2);
case "Sun":
if (ss[i]=="on")
I.add(3);
else
I.add(4);
case "Water":
if (ss[i]=="on")
I.add(5);
else
I.add(6);
case "Gravel":
if (ss[i]=="on")
I.add(7);
else
I.add(8);
}
}
}
因为我不能动态地将值添加到数组中,所以我决定先创建一个整数列表,然后再将其转换为整数数组:
List<Integer> I = new ArrayList<Integer>();
[...]
Integer[] arr = I.toArray(new Integer[I.size()]);
但不是我预期的结果:
{"1", "4", "3", "6"}
我总是会得到一个数字序列作为结果:
{"1", "2", "3", "4"}
好像我在转换时做错了什么?
完整代码如下:
public static Integer[] toImg(String[] s, String[] ss) {
List<Integer> I = new ArrayList<Integer>();
for(int i = 0; i < s.length; i++)
{
switch (components[i]) {
case "Light":
if (ss[i]=="on")
I.add(1);
else
I.add(2);
case "Sun":
if (ss[i]=="on")
I.add(3);
else
I.add(4);
case "Water":
if (ss[i]=="on")
I.add(5);
else
I.add(6);
case "Gravel":
if (ss[i]=="on")
I.add(7);
else
I.add(8);
}
}
Integer[] arr = I.toArray(new Integer[I.size()]);
return arr;
}
【问题讨论】:
-
Switch 语句在每个 case 之后都需要中断,否则它们会触发其余的 case。会不会是这个问题?
-
谢谢 user3837868,我错过了休息时间!
标签: java android arrays list integer