2012-11-11 7 views
0

이 코드를 작성했지만 작동하지 않는 것 같습니다. d을 입력하면 달러 계산이 수행되지만 여전히 수행됩니다 (.. 무엇입니까?).switch 문을 예기치 않은 결과가

+ 부분 + 목록에서 잘못된 부분을 볼 수 있습니까?

String currency = sc.next(); 
     char detect = currency.charAt(0); 
switch (detect){ 
    case 'D': 
    case 'd': 
     double dollar = (amount/18*10); 
     System.out.println(amount + " Turkish Lira(s) --> " + dollar + " Dollar"); 

    case 'E': 
    case 'e': 
     double euro = (amount/23*10); 
     System.out.println(amount + " --> " + euro + " Euro"); 

    case 'T': 
    case 't': 
     double lira = (amount); 
     System.out.println(amount + " --> " + lira+ " Lira(s)"); 

     while (detect!='d'|| detect!='e' || detect!='t' || detect!='D'|| detect!='E' || detect!='T'){ 
      System.out.println("Can u See " + detect + " In The List ?\n" + menucur); 
      currency = sc.next(); 
      detect = currency.charAt(0); 
      } 
    } 
+6

앞에'switch' : 또한, ('D', 'D', 'E', 'E', 'T', 't'를 사용 키워드 default 이외의 문자)가 잘못 입력을 처리 할 는 각 코드 문 집합의 끝에 "break;"가 필요합니다. 그렇지 않으면 "fall through"됩니다. –

+3

여기서 downvote 할 이유가 없습니다. 명확한 답이있는 유효한 질문입니다. –

+0

확인. 하지만 어디? – user1810113

답변

4

switch 문에 각 사례 끝에 break을 추가해야합니다.

은 :, http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

+0

확인. 지금 내가 d 또는 t 또는 e를 입력하면 그 벌금. 그러나 처음에는 잘못된 문자 l 또는 ş을 입력하십시오. 이 후에도 내가 d 또는 t 또는 e를 입력해도 작동하지 않습니다 – user1810113

+1

@ user1810113 : "작동하지 않습니다"는 * 결코 * 충분한 정보가 아닙니다. 네가 한 일 (정확하게), 일어날 것으로 예상되는 일, 일어난 일에 대해 말해보십시오. –

+1

이것은별로 유용하지 않습니다. *** 어디에서 *** 스위치에? –

2

case 블록의 각 문장의 각 시리즈의 끝에 break 추가 등

switch (detect){ 
    case 'D': 
    case 'd': 
     double dollar = (amount/18*10); 
     System.out.println(amount + " Turkish Lira(s) --> " + dollar + " Dollar"); 
     break; // <==== Add this 

    case 'E': 
    case 'e': 
     double euro = (amount/23*10); 
     System.out.println(amount + " --> " + euro + " Euro"); 
     break; // <==== Again here 

... 및 예컨대을 참조하십시오. 그 코드는 다음 case으로 옮기고 싶지 않습니다.

Java에서 좋은 입문서를 읽는 것이 좋습니다. 의견에서 MadProgrammer는 switch, here에 관한 하나의 자습서를 지적했으나 한 걸음 물러서서 기본 사항을 약간 검토했습니다. 이를 위해

, 여기에 제대로 작성 switch 문장의 예 : 오마르 잭맨이 이미 지적

// Assume `n` is an integer 
switch (n) { 
    case 0: 
    case 1: 
     System.out.println("n is 0 or 1"); 
     break; 

    case 2: 
    case 3: 
    case 4: 
     System.out.println("n is 2, 3, or 4"); 
     break; 

    case 17: 
     System.out.println("n is 17"); 
     break; 

    default: 
     System.out.println("n has some value other than 0, 1, 2, 3, 4, or 17"); 
     break; 
} 
+0

while.if에 대한 도달 할 수없는 코드가 있습니다. 기본값을 쓰면 코드에 밑줄이 표시됩니다. 5 : – user1810113

+1

@ user1810113 : 인용 된 코드에 기본 값이 없습니다. 'while' 루프가 기본 케이스 인 것을 의미한다면, 그 위에'default :'를 놓으십시오 (그리고 앞의'case'에 대해'break;'를 넣으십시오 *). 다시 말하지만,이 작업을 계속하기 전에 다시 한발 더 나아가 독서를하는 것이 좋습니다. 이것은 괜찮은 튜토리얼이나 입문서가 다루는 기본적인 내용입니다. –

1

필요한 beak 키워드가 없습니다.

switch(case) 
    case 'D': 
    case 'd': 
     double dollar = (amount/18*10); 
     System.out.println(amount + " Turkish Lira(s) --> " + dollar + " Dollar"); 
     break; 

    case 'E': 
    case 'e': 
     double euro = (amount/23*10); 
     System.out.println(amount + " --> " + euro + " Euro") 
     break; 

    //.. rest of your code 
    // finally: 

    default: // <- handle invalid letter input 
     System.out.println("Invalid input"); 
     break; 
} 
+0

고마워요, 내 친구. 그게 뭐야, 찾고있어. – user1810113

+0

당신은 오신 것을 환영합니다.이 게시물에 대한 답변이 귀하의 물음표가 대답 인 경우 : [답변 수락 방법은 무엇입니까?] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

관련 문제