01/10/2018, 12:23

Mọi người cho em hỏi vấn đề về arraylist

Em có 1 chuỗi là mệnh đề gồm có biến mệnh đề và giá trị của biến đó
vd “(a&b)|c true false true”
Sau đó em có viết một chương trình để thế giá trị vào biến theo thứ tự từ trái qua, sau đó ghi vào chuỗi mới.Nhưng đến phần iterator cuối thì nó lại chạy không đúng.Mong mọi người giúp em.Em xin cám ơn.

public static void main(String[] args){
	String string = "(a&b)|c true false true";
	StringTokenizer st = new StringTokenizer(string," ");
	StringTokenizer st2 = new StringTokenizer(string,"()&|>= ",true);
	ArrayList<String> al = new ArrayList<String>();
	ArrayList<String> al2 = new ArrayList<String>();
	while(st.hasMoreTokens()){
		al.add(st.nextToken());
	}
	while(st2.hasMoreTokens()){
		al2.add(st2.nextToken());
	}
	Iterator<String> it = al.iterator();
	while(it.hasNext()){
	String element = it.next();
	if(!element.equals("true")&&!element.equals("false")){
		it.remove();
		element = it.next();
	}
	System.out.print(element + " "); 
	}
	System.out.println();
	Iterator<String> it2 = al2.iterator();
	while(it2.hasNext()){
		String element2 = it2.next();
		if(!element2.equals("true")&&!element2.equals("false"))
			System.out.print(element2); 
	}
	System.out.println();
	String str3 = "";
	Iterator<String> it3 = al2.iterator();
	Iterator<String> it4 = al.iterator();
	while(it3.hasNext()){
		String element3 = it3.next();
		if(!element3.equals("true")&&!element3.equals("false")){
			switch (element3){
			case "(":
			str3+=element3;
			break;
			case ")":
			str3+=element3;
			break;
			case "&":
			str3+=element3;
			break;
			case "|":
			str3+=element3;
			break;
			case ">":
			str3+=element3;
			break;
			case "=":
			str3+=element3;
			break;
			default:
**			 while(it4.hasNext()){
			element3=it4.next();
			}
			str3+=element3;
		}}
			
	}
	System.out.println(str3);
	}
Bài liên quan
0