2012-10-13 8 views
1

온라인에서 보았으며 모든 자습서/질문에서이 점을 지적했습니다. 왜 이것이 작동하지 않는지 나는 알 수 없다. 어떤 도움이라도 대단히 감사 할 것입니다. 감사합니다스캐너를 사용하는 중에 문자열 비교가 실패합니다.

import java.util.*; 

public class test { 
    static Scanner userInput = new Scanner(System.in); 
    public static void main(String[] args) { 
     String textEntered = userInput.next(); 
     if (textEntered == "hello") { 
      System.out.println("Hello to you too!"); 
     } 
    } 
} 

"hello"를 입력했지만 아무 것도 인쇄되지 않습니다. 또한 나는 next()와 nextLine()을 시도했다.

+2

String 클래스에서 제공되는 실제 문자열을 비교 ? –

+0

저는 온라인 유튜브 튜토리얼을 보았습니다. 그는 언급하지 않았으며, 온라인에서 보았을 때 대부분 비슷한 코드를 사용했습니다. 작동하지 않는 if 문이라는 것을 깨닫지 못했습니다. 또한, 실제 코드에서는 while 루프에 있었고 간단하게 단순화하여 실수로 루프에 태그를 붙였습니다. –

답변

6

몇 가지 :

  1. 당신이 말한 질문 제목에서 "루프 동안",하지만 코드에서 더 while 루프가 없습니다. 따라서 사용자는 입력 한 첫 번째 토큰 만 확인하고 후속 토큰은 확인하지 않습니다.

  2. 자바에서는 ==을 사용하여 문자열을 비교하지 않으므로 equals 메서드 (또는 경우에 따라 equalsIgnoreCase)를 사용합니다.

    변경

    if (textEntered == "hello") { 
    

    객체 인스턴스 (및 String 인스턴스 객체)를 사용

    if (textEntered.equals("hello")) { 
    

    == 연산자로 두 피연산자가 동일한 개체 가리 있는지 확인 , 그래서 두 개를 비교하는 데 사용하면 사실이 아닙니다. String cha가 동일한 객체 racters.

+1

그 작품! 고마워. :) 나는 C++로 자바를 익히고 익숙해 져야했다. 고마워요. –

+0

@Mikeecb : :-) ... –

-1

실제로 작동하지 않는 이유는 실제 문자열 값을 비교하지 않기 때문입니다.

http://www.leepoint.net/notes-java/data/strings/12stringcomparison.html

같은 것을 사용해보십시오.

if (textEntered.compareTo("hello") > 0) { 
    System.out.println("Hello to you too!"); 
} 

그러면 도움이 될 것입니다.

+0

당신이 지적한 그 링크 : "** 불평등 ** 비교를 테스트하기 위해 .compareTo() 메서드를 사용하십시오". '.compareTo'는 동일한 객체에 대해 0을 반환합니다. –

+0

두 문자열이 같은지 테스트하는 데 사용합니다. 그들이있는 경우 1을 반환합니다. 그렇지 않다면 1을 반환합니다. 그러나 두 가지 방법 모두 원하는대로 정확하게 전달할 수 있습니다.compareTo 함수는 동일하지 않을뿐만 아니라 같음에도 사용할 수 있습니다. 그래서 똑같은 기능이 있다는 것을 아는 것이 낫습니다. 내가 주로 얻은 것은, Mikeecb의 문제는 쉽게 Google 검색이었습니다. 그래서 내가 너를 도울 것이라고 말한 이유. –

+0

'Comparable.compareTo()'에 대한 Javadoc을 살펴보고 반환 할 내용을 확인하십시오. –

1

자바에서는 == 연산자로 문자열을 비교할 수 없습니다. stringOne.equals(stringTwo)을 사용해야합니다.

==.equals()로 ObjectLocation을 비교합니다 유는 사용자 입력에 대한 루프에 가고 싶어 않았다 ... 그래도 난 니펫에서 while 루프가 표시되지 않는 자바

관련 문제