我从数据库中以0或1格式(如001、100、111)获取3位数字值。基于该值,我必须执行一些操作,我已经为其编写了代码,但不一致。对于3个值,然后将它们添加到ArrayList
中,它可以正常工作。但是,当我将少于3个或超过3个值传递给ArrayList
下面是我创建的程序,请帮助我纠正此程序。
package com.company;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// write your code here
String num;
ArrayList<String> al = new ArrayList<String>();
al.add("100");
al.add("111");
al.add("010");
//al.add("111");
String[] array;
if (al.size() > 0) {
for (int i = 0; i < al.size(); i++) {
array = al.get(i).split("");
System.out.println("Size of array is" + array.length);
for (int j = 0; j < al.size(); j++) {
System.out.println("size at position" + j + " is " + array[j]);
if (array[j].equals("1") && j == 0) {
System.out.println("PODS Enalbe");
} else if (array[j].equals("1") && j == 1) {
System.out.println("BAM Enalbe");
} else if (array[j].equals("1") && j == 2) {
System.out.println("PNDE Enalbe");
}
}
}
} else {
System.out.println("No value found in PTM_TRIGGER Table");
}
}
}
答案 0 :(得分:0)
在您的内部循环中,您需要检查array.length()
,而不是al.size()
。
我对您的代码进行了一些更改,以使其更具可读性(和功能)
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
boolean isPODSEnable;
// write your code here
ArrayList<String> al = new ArrayList<String>();
al.add("100");
al.add("111");
al.add("010");
String[] array;
if (al.size() > 0) {
for (int i = 0; i < al.size(); i++) {
array = al.get(i).split("");
System.out.println("Size of array is" + array.length);
for (int j = 0; j < array.length; j++) {
System.out.println("size at position" + j + " is " + array[j]);
if ( "1".equals(array[j])) {
switch(j) {
case 1: // not 0. Your array is [,1,0,0], not [1,0,0]
System.out.println("PODS Enalbe");
break;
case 2: System.out.println("BAM Enalbe");
break;
case 3: System.out.println("PNDE Enalbe");
break;
}
}
}
}
} else {
System.out.println("No value found in PTM_TRIGGER Table");
}
}
}
答案 1 :(得分:0)
正如我在评论中提到的那样,内循环的停止条件是错误的。但是我觉得您的方法也有些复杂。您实际上并不需要将String
拆分为String[]
,可以直接使用charAt
访问字符。我还建议在循环List
时使用增强的for循环,这样就不会犯错使用错误的停止条件的情况。
这将产生如下内容:
public static void main(String[] args) {
List<String> al = new ArrayList<String>();
al.add("100");
al.add("111");
al.add("010");
al.add("1000");
if (al.size() > 0) {
for(String s : al) {
if(s.length() != 3) {
System.out.println("String has invalid length");
continue;
}
if(s.charAt(0) == '1') {
System.out.println("PODS Enable");
}
if(s.charAt(1) == '1') {
System.out.println("BAM Enable");
}
if(s.charAt(2) == '1') {
System.out.println("PNDE Enable");
}
System.out.println();
}
} else {
System.out.println("No value found in PTM_TRIGGER Table");
}
}
对于长度不正确的字符串,该由您自己决定。在我上面的程序中,它只是忽略它们。
答案 2 :(得分:-1)
import java.util.ArrayList;
公共类TestClass {
public static void main(String[] args) {
boolean isPODSEnable = false;
// write your code here
ArrayList<String> al = new ArrayList<String>();
al.add("100");
al.add("111");
al.add("010");
al.add("0110");
al.add("000");
if (al.size() > 0) {
for (String s : al) {
int index = s.indexOf("1");
switch (index) {
case 0: // not 0. Your array is [,1,0,0], not [1,0,0]
System.out.println("PODS Enalbe");
break;
case 1:
System.out.println("BAM Enalbe");
break;
case 2:
System.out.println("PNDE Enalbe");
break;
default:
System.out.println("Not Found");
break;
}
}
} else {
System.out.println("No value found in PTM_TRIGGER Table");
}
}
}