2013-12-15 2 views
0

Этот код должен получить письмо от пользователя, а затем присвоить значение букве, исходя из того, сколько очков оно стоит. Это моя первая часть, работающая на Java, и по какой-то причине я не могу заставить оператор if присвоить переменную что угодно.Невозможно заставить Java присваивать значение переменной, используя оператор if

import java.util.Scanner; 

public class LetterValues { 

public static void main(String args[]){ 

    Scanner scanner = new Scanner(System.in); 
    String letterInput1, letterInput2, letterInput3, letterInput4; 
    int firstLetter = 0, secondLetter = 0, thirdLetter = 0, fourthLetter = 0; 

    // Asks for first input letter 
    System.out.print("What is your first letter? "); 

    // Reads the first input letter 
    letterInput1 = scanner.next(); 

    // Converts the first letter to upper case, prints out to check 
    System.out.println(letterInput1.toUpperCase()); 

    // Prints out first letter to check 
    System.out.println(letterInput1); 

    // Assigns a value to the firstLetter int based on the value of letterInput1 
    if ((letterInput1 == "A") || (letterInput1 == "E")) 
    { 
     firstLetter = 1; 
    } 
    else if ((letterInput1 == "D") || (letterInput1 == "R")) 
    { 
     firstLetter = 2; 
    } 
    else if ((letterInput1 == "B") || (letterInput1 == "M")) 
    { 
     firstLetter = 3; 
    } 
    else if ((letterInput1 == "V") || (letterInput1 == "Y")) 
    { 
     firstLetter = 4; 
    } 
    else if ((letterInput1 == "J") || (letterInput1 == "X")) 
    { 
     firstLetter = 8; 
    } 
    else 
    { 
     System.out.println("Error."); 
    } 

    System.out.println(firstLetter); 
    } 
} 

Результат:

What is your first letter? A //<--input 
    A 
    A 
    Error. 
    0 
    What is your second letter? 
+1

Не сравнивайте содержимое строк с помощью '=='. Используйте 'equals()' –

ответ

1

Использование equals() вместо == для сравнения Strings

Причина

equals() Метод присутствует в классе java.lang.Object, и ожидается, что он проверяет эквивалентность состояния объектов !. Это означает, что содержимое объектов. В то время как ожидается, что оператор == проверяет, что фактические экземпляры объекта одинаковы или нет.

Пример

Рассмотрим два различных эталонных переменных str1 и str2

str1 = new String("abc"); 
str2 = new String("abc"); 

если вы используете equals()

System.out.println((str1.equals(str2))?"TRUE":"FALSE"); 

Вы получите выход в TRUE

если вы используете ==

System.out.println((str1==str2)?"TRUE":"FALSE"); 

Теперь вы получите FALSE в качестве выходного сигнала, потому что оба str1 и str2 указывают на двух различных объектов, даже если оба из них одни и те же содержимое строки. Это из-за new String() каждый раз, когда создается новый объект.

+1

Кроме того, если случай не имеет значения, вы можете использовать .equalsIgnoreCase – M21B8

2

Использование equals() для сравнения строк:

"A".equals(letterInput1) 
Смежные вопросы