2012-11-11 3 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' требует 'break;' в конце каждого набора инструкций кода, иначе он «провалится». –

+3

Нет причин для downvote здесь. Действительный вопрос с четким ответом. –

+0

ОК. но где ? – user1810113

ответ

4

Вам нужно добавить break в конце каждого дела для вашего коммутатора заявления.

см http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

+0

ОК. теперь, когда я набираю d или t или e его fine.but сначала введите неправильную букву l или ş для ex. после этого даже я вхожу в d или t или e it istn workin – user1810113

+1

@ user1810113: «он не работает» - это * никогда * достаточная информация. Скажите, что вы сделали (точно), что вы ожидали, и что произошло. –

+1

Это не очень полезно. *** Где *** в 'switch'? –

2

Добавить break в конце каждой серии заявлений в каждом из ваших case блоков, например .:

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:' над ним (и поместите 'break;' для предыдущего 'case' выше *, который *). Опять же, я рекомендую отступить и сделать некоторое чтение, прежде чем продолжить с этим. Это основной материал, на который распространяется любой достойный учебник или учебник. –

1

Необходимое beak ключевое слово отсутствует, как Омар Джекман уже указал. Кроме того, для обработки недействительных входов (отличную от 'D', 'D', 'E', 'х', T '', '' т использовать ключевое слово default буквы):

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) –

Смежные вопросы