2014-01-19 4 views
-2

Я хочу просто прочитать ввод (Char/String, желательно char), его одиночный символ, а затем напечатать несколько выходов на основе входов. Мои проблемы, с которыми сталкиваются в том, что, если я конвертировать мой вход «выбор» в полукокса, мои сообщения об ошибках:Не можете сравнить Char/String?

Несоответствие типа: не может конвертировать из строки на символ Несовместимые типы операндов обугливается и Строка

любая идея, Что неправильно? Благодаря!

* Если бы я оставил его, как это он просто дает мне «Invalid выбор»

import java.util.*; 

public class P1 { 

    public static void main(String[] args) { 

     // Create a scanner 
     Scanner userInputScanner = new Scanner(System.in); 
     String choice = userInputScanner.nextLine(); 

     System.out.println("Your choice is " + choice); 

     if ((choice == "A") || (choice == "a")) 
      System.out.println(" Action Movie Fan"); 
      else if ((choice == "C") || (choice == "c")) 
       System.out.println(" Comedy movie fan "); 
      else if ((choice == "D") || (choice == "d")) 
       System.out.println(" Drama movie fan "); 
      else 
       System.out.println("Invalid choice"); 


    } 

} 
+1

Я не думаю, что вы получили сообщение об ошибке с фрагментом кода, который вы предоставили. Но использовать 'equals()' ('equalsIgnoreCase()' было бы лучше для вас в этом случае) для сравнения значений String. –

+0

nextLine() вернет String, если вы хотите вводить как Char, вам нужно прочитать String, а затем String.toCharArray(). [0] вернет вам персонаж в первую позицию –

ответ

0

для вашего случая, попробуйте использовать String.equalsIgnoreCase. Возможно, вам захочется изучить использование Enum.

2

Вы сравнить строки в Java с помощью equals:

if ("A".equals(choice) || "a".equals(choice)) { 
    ... 
} 

или equalsIgnoreCase:

if ("A".equalsIgnoreCase(choice)) { // "a".equalsIgnoreCase(choice) works too 
    ... 
} 

Однако в вашем случае вам нужно сравнить один символ, так что вы можете сделать это:

if (choice.length() == 1) { 
    // Convert to upper case for case insensitivity 
    char selection = Character.toUpperCase(choice.charAt(0)); 
    switch (selection) { 
    case 'A': 
     ... 
     break; 
    case 'C': 
     ... 
     break; 
    case 'D': 
     ... 
     break; 
    } 
    ... 
} 
+0

Замечательно! Это работает! – user2999509

+0

@ user2999509 Добро пожаловать! Если ваша проблема исправлена, подумайте о том, чтобы принять ответ, нажав на серый флажок рядом с ним. Это позволит другим посетителям сайта узнать, что вы больше не активно ищете улучшенное решение вашей проблемы и получаете совершенно новый значок в Stack Overflow. – dasblinkenlight

0
import java.util.*; 

public class P1 { 

    public static void main(String[] args) { 

     // Create a scanner 
     Scanner userInputScanner = new Scanner(System.in); 
     String choice = userInputScanner.nextLine(); 

     System.out.println("Your choice is " + choice); 

     if (choice.trim().equalsIgnorecase("A")) 
      System.out.println(" Action Movie Fan"); 
     else if (choice.trim().equalsIgnorecase("B")) 
      System.out.println(" Comedy movie fan "); 
     else if (choice.trim().equalsIgnorecase("D")) 
      System.out.println(" Drama movie fan "); 
     else 
      System.out.println("Invalid choice"); 

    } 
} 

в противном случае сравнить только первый символ строки, такой как choice.charAt(0) == 'A'

0

Что вы должны знать, так это то, что «A» и «a» не являются символами, это строки. Что вам нужно сделать, это вызвать метод String's equals() (а не оператор ==) для сравнения. Точно так же:

if(stringOne.equalsIgnoreCase("A")) { 
    //methods 
} 
Смежные вопросы