Первая и главная проблема вашего кода состоит в том, что вы просматриваете массив компонентов, и в вашем методе не определено такое поле, но вместо этого, согласно формулировке вашей проблемы, оно должно быть
switch (s[i])
Итогда есть также проблема с вашим оператором switch, так как они заканчиваются без оператора break, заставляющего их работать во всех случаях, независимо от того, так ли это.Вы можете лучше понять мою реализацию вашего кода, которая выглядит как
import java.io.*;
import java.util.*;
class Test
{
public static void main(String args[])throws IOException
{
List<Integer> I = new ArrayList<Integer>();
String[] s = {"Light", "Sun", "Sun", "Water"};
String[] ss = {"on", "off", "on", "off"};
for(int i = 0; i < s.length; i++) {
switch (s[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);
}
System.out.println(I+" at i="+i);
}
Integer[] arr = I.toArray(new Integer[I.size()]);
System.out.println(I);
}
}
Итак, вот код, который вы написали, и когда я запускаю его, я получаю вывод
[1, 3, 5, 7] at i=0
[1, 3, 5, 7, 4, 6, 8] at i=1
[1, 3, 5, 7, 4, 6, 8, 3, 5, 7] at i=2
[1, 3, 5, 7, 4, 6, 8, 3, 5, 7, 6, 8] at i=3
[1, 3, 5, 7, 4, 6, 8, 3, 5, 7, 6, 8]
Итак, выможно увидеть, что всегда все дела выполняются и в зависимости от значения ss [] вывод поступает.Таким образом, вы можете исправить код как
import java.io.*;
import java.util.*;
class Test
{
public static void main(String args[])throws IOException
{
List<Integer> I = new ArrayList<Integer>();
String[] s = {"Light", "Sun", "Sun", "Water"};
String[] ss = {"on", "off", "on", "off"};
for(int i = 0; i < s.length; i++) {
switch (s[i]) {
case "Light":
if (ss[i]=="on")
I.add(1);
else
I.add(2);
break;
case "Sun":
if (ss[i]=="on")
I.add(3);
else
I.add(4);
break;
case "Water":
if (ss[i]=="on")
I.add(5);
else
I.add(6);
break;
case "Gravel":
if (ss[i]=="on")
I.add(7);
else
I.add(8);
break;
}
System.out.println(I+" at i="+i);
}
Integer[] arr = I.toArray(new Integer[I.size()]);
System.out.println(I);
}
}
И вывод будет
[1] at i=0
[1, 4] at i=1
[1, 4, 3] at i=2
[1, 4, 3, 6] at i=3
[1, 4, 3, 6]
Что является обязательным ответом.Надеюсь, я ясно дал понять.