2014-07-04 5 views
-3

Java에서 조건부 연산자를 사용할 때 예기치 않은 문제가 있습니다. 코드에서 ArrayList에 특정 문자열이 들어 있는지 확인한 다음 true 또는 false를 반환합니다. 내가 이것을하는 것은 처음이 아니지만, 무엇인가의 이유 때문에 뭔가 잘못되었다.Java에서 조건부 단순 (예기치 않은 문제)

public boolean isDone() { 
    ArrayList<String> al = new ArrayList<String>(); //Defining ArrayList 
    al.add(d1.getText()); // Adding the text from JLabels. 
    al.add(d2.getText()); 
    al.add(d3.getText());  
    al.add(d4.getText()); 
    al.add(d5.getText());  

    if(al.contains(".")) { 
     return false; 
    } else { 
     return true; 
    } 

문제는 디버거를 실행하는 경우, 그것은 대신 그 false을 반환해야한다는 것입니다, 그것은 true를 반환

이 지금까지 내 코드입니다. 어떤 이유로 조건부는 ArrayList의 내용을 "읽지"않습니다.

photo

보시다시피

enter image description here

, ArrayList의는 false를 반환하는 조건 필요 . 포함되어 있지만 대신에, 그것은 true를 반환합니다. 내 코드에서 무엇이 잘못 되었습니까?

+2

"ArrayList"에는 아무 것도 표시되지 않습니다. – MightyPork

+1

'ArrayList'의 각 원소가''. "'을 포함하는지 확인하고 싶을 것입니다. –

답변

4

이 시도 :

public boolean isDone() { 

    ArrayList<String> al = new ArrayList<String>(); 

    al.add(d1.getText()); 
    al.add(d2.getText()); 
    al.add(d3.getText());  
    al.add(d4.getText()); 
    al.add(d5.getText()); 

    for (String str : al) 
     if (str != null && str.contains(".")) 
      return false; 

    return true; 

} 

을 개별적 각 문자열을 확인해야 ArrayListcontains() 방법은 true를 반환합니다 정확한 문자열 "."이 문자열이 아닌 경우 하나의 목록에 존재하는 경우에만 목록에 점이 포함되어 있습니다.

1

a1.contains (...)를 사용하면 배열의 스팅이 "."인지 여부를 확인합니다. 배열 "a1"의 문자열에 '.'이 포함되어 있는지 확인하려는 의도와 다릅니다. 나는 이해한다.

배열의 문자열에 "."이 포함되어 있는지 확인해야하는 경우 그것은 다음과 같이 할 수있는 텍스트 :

for(String text : a1) { 
    if(text != null && text.indexOf(".") >= 0) { 
    return false; 
    } 
} 
return true; 
1

귀하의 List<String>"." 동일 String 포함되어 있지 않습니다. .이 들어있는 String을 가지고 있지만 그 것은 같지 않습니다. String.contains(CharSequence),

public boolean isDone() { 
    List<String> al = new ArrayList<String>(); // <-- I would use the Interface type 
    al.add(d1.getText()); 
    al.add(d2.getText()); 
    al.add(d3.getText());  
    al.add(d4.getText()); 
    al.add(d5.getText()); 

    // If any String in al contains a '.' return false, else true. 
    for (String str : al) { 
    if (str.contains(".")) { 
     return false; 
    } 
    } 
    return true; 
}