这段代码应该从用户那里获得一个字母输入,然后根据它的价值分配一个值。这是我在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?
答案 0 :(得分:2)
使用equals()
比较字符串:
"A".equals(letterInput1)
答案 1 :(得分:1)
使用equals()
代替==
来比较Strings
原因
{p}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()
每次创建一个新对象。