2012-10-04 2 views
1

가능한 중복 : 내 자바 응용 프로그램에서
How do I compare strings in Java?계속 오류

. 챌린지를 수락하려면 y를 눌러도 프로그램이 계속 진행되지 않습니다. 아무도 이것으로 나를 도울 수 있습니까?

import java.util.Scanner; 


    public class MainApp 
    { 


     public static void main(String[] args) 
     { 
      Scanner scanner = new Scanner(System.in); 
      System.out.println("Hello User"); 
      System.out.println("Please Enter your first name"); 
      String name; 
      name =scanner.next(); 

     System.out.println("\n" + " Hello " + name + "how are you today?"); 
     String y=""; 
     y=scanner.next(); 


     System.out.println("\n" + " Well " + name + " I am " + y + " Too." +"\n" + " I have a riddle for you " + name + ", wll you Attempt it?" + "\n" + " Type y for yes , or n for no"); 
     String v; 
     v=scanner.next(); 


     if(v == "y") 
      { 
      System.out.println("\n" + "How much wood could a wood chuck chuck if a wood chuck could chuck wood? :) "); 
      } 

     else if(v == "n") 
      { 
      System.out.println("Ok then " + name + " suit youself, Goodbye! :) "); 
      } 
     else 
      { 
      System.out.println("Please pick y, or n , and make sure it is in lower case"); 
      } 

     } 

    } 

답변

6
if(v == "y") 

당신은 문자열을 비교하는 String.equals()을 사용해야합니다

여기 내 코드입니다.

때문에 조건에 대한 코드의 라인을 따라해야한다 :

if ("y".equals(v)) //checking "y".equals() prevents null access if v is null 

설명 :
operator==정체성 확인한다 - 두 피연산자가 동일한 경우 목적. 이것은 문자열을 사용하는 경우가 거의 없기 때문에 원하는 것이 아닙니다.

반면에 equals() 메서드는 두 개체가 서로 같으면 항등식을 확인합니다.

+0

감사합니다 아 미트. 최대한 빨리 받아 들일 수 있습니다. – Pendo826

+1

@ Pendo826 : 환영합니다. 또한 사용자가 y/n이 아닌 루프를 삽입 한 경우 질문을 반복하려면 'scanner.next()'를 입력하고 [while 루프] (http://docs.oracle.com)에 입력 검사를 입력해야합니다. .com/javase/tutorial/java/nutsandbolts/while.html). 당신은 그것을 밖으로 시도해야합니다! (문제를 발견하면 새로운 질문으로 써야하지만 먼저 시도해보십시오.) – amit

2

== 연산자 대신 0x을 사용하십시오. 비교 대상 객체가 동일한 객체 참조 (동일한 객체 임)를 가질 가능성이 없으므로 연산자를 사용하십시오.

if ("y".equals(v)) { 
... 

이상

if ("y".equalsIgnoreCase(v)) { 
... 
+0

''y '.equals (v)''v''가'null '인 경우 –

+0

예, 감사합니다. – Reimeus

관련 문제