2013-10-24 2 views
1

Я беру ввод от пользователя в строке, и я хочу повторить и проверить с помощью case case, но он не работает. его не печатают заявления.преобразовать строку в char с ключом коммутатора

import java.io.*; 
import java.util.*; 

public class fh3 

{ 
    public static void main(String args[])throws IOException 

{ 

    String sentence = ""; 

    System.out.println("Enter the word : "); 
    Scanner scan = new Scanner(System.in); 
    String word = scan.next(); 


    char[] chars = word.toCharArray(); 

    for(int i = 0; i < word.length(); i++) 
    { 

     System.out.println("---" + chars[i]); 
     switch(chars[i]) 
     { 
      case 0: sentence = " "; 
       System.out.println("B"); 
       break; 
      case 1: sentence = "A"; 
       break; 
      case 2: sentence = "B"; 
       System.out.println("B"); 
       break; 
      case 3: sentence = "C"; 
       break; 


     } 
     sentence+=sentence; 
    System.out.println(sentence); 
    } 


} 

} 

если я вхожу 20 ден он должен напечатать "B" , но его печать как

Enter the word : 
20 
---2 

---0 

где я получаю неправильно?

ответ

1

Поскольку вы переключились на символов, а не целые числа:

switch(chars[i]){ 
    case '0': sentence = " "; 
      System.out.println("B"); 
      break; 
    case '1': sentence = "A"; 
      break; 
    case '2': sentence = "B"; 
      System.out.println("B"); 
      break; 
    case '3': sentence = "C"; 
      break; 
} 
3

Поскольку вы делаете переключатель на char типа, ваше дело должно быть то же самое. В вашем случае, поскольку вы передаете случай как целочисленные значения, его просто не совпадают. «0» не равно 0

switch(chars[i]) { 
    case '0': // switch on char '0' and not integer 0. 
    case '1': // switch on char '1' and not integer 1. 
    case '2': // switch on char '2' and not integer 2. 
    ... 
} 
1

коммутатор принимает char, но не подходящей case является there.So его печать только это утверждение System.out.println("---" + chars[i]); два раза (потому что word.length() возвращает 2 в вашем случае)

import java.io.*; 
import java.util.*; 

public class fh3 

{ 
    public static void main(String args[])throws IOException 

{ 

    String sentence = ""; 

    System.out.println("Enter the word : "); 
    Scanner scan = new Scanner(System.in); 
    String word = scan.next(); 


    char[] chars = word.toCharArray(); 

    for(int i = 0; i < word.length(); i++) 
    { 

     System.out.println("---" + chars[i]); 
     switch(chars[i]) 
     { 
      case '0': sentence = " "; 
       System.out.println("B"); 
       break; 
      case '1': sentence = "A"; 
       break; 
      case '2': sentence = "B"; 
       System.out.println("B"); 
       break; 
      case '3': sentence = "C"; 
       break; 


     } 
     sentence+=sentence; 
    System.out.println(sentence); 
    } 


} 

} 
+0

Как он может работать, так как его символы содержат алфавиты, а не числа – Prateek

+0

@Prateek да, поэтому случаи имеют тип char – SpringLearner

+0

Нет, это так хорошо, но значение случаев is'0 ',' 1 'и т. Д. Im talk in контекст его программы, я не говорю, что ваш код ошибочен. – Prateek

1

В Java тип char относится к int типам через Ascii table.

Поэтому, если вы хотите, чтобы проверить полукокс '0', а не NUL полукокса, вы должны сделать:

switch(chars[i]) { 
    case '0': // do the work 
    case '1': // do the work 
    // ... 
} 
2
import java.io.IOException; 
import java.util.Scanner; 

public class Fh3 { 
    public static void main(String args[]) throws IOException { 

     String sentence = ""; 
     System.out.println("Enter the word : "); 
     Scanner scan = new Scanner(System.in); 
     String word = scan.next(); 

     //Switch case needs you to compare the expression with constants hence the final keyword. 
     final char CHARONE = '1'; 
     final char CHARTWO = '2'; 
     final char CHARTHREE = '3'; 
     final char CHARFOUR = '4'; 

     char[] chars = word.toCharArray(); 

     for (int i = 0; i < word.length(); i++) { 
      System.out.println("---" + chars[i]); 
      switch (chars[i]) { 
       case 0: 
        sentence = " "; 
        System.out.println("B"); 
        break; 
       case CHARONE: 
        sentence = "A"; 
        break; 
       case CHARTWO: 
        sentence = "B"; 
        System.out.println("B"); 
        break; 
       case CHARTHREE: 
        sentence = "C"; 
        break; 

      } 
      sentence += sentence; 
      System.out.println(sentence); 
     } 
    } 
} 

Вы пытаетесь сравнить ИНТ с полукокса .. Ясно?

+0

Думаю, вам нужно будет исправить случай 0: слишком :-). упускать из виду – arjun

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