好吧,我正在努力做出这个简单的事情,但它不会起作用.我是Java的初学者,想要一些帮助.每次我运行下面的代码,我得到输出,这不是一个有效的选项.我究竟做错了什么?
package test;
import java.util.Scanner;
public class options {
public void options() {
Scanner scnr = new Scanner(System.in);
String slctn;
System.out.println("What would you like to do?");
System.out.println("a) Travel the expedition");
System.out.println("b) Learn more about the expedition");
slctn = scnr.nextLine();
if (slctn == "a"){
travel exeTravel = new travel();
exeTravel.travel();
}else if (slctn=="b"){
learn exeLearn = new learn();
exeLearn.learn();
}else{
System.out.println("That is not a valid option");
}
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,首先,==是该语言的基本操作符.表达式的结果类型是布尔值.为了比较布尔类型,它比较了相同真值的操作数.为了比较引用类型,它比较相同参考值的操作数(即,引用相同的对象或都是null).对于数字类型,它会比较相同整数值或等效浮点值的操作数.请参阅Java语言规范.
相反,equals()是一个实例方法,它基本上由java.lang.Object类定义.按照惯例,该方法指示接收方对象是否"等于"传入的对象.Object类中此方法的基本实现检查引用相等性.其他类(包括您编写的类)可能会覆盖此方法以执行更专业的等效性测试.请参阅Java语言规范.
对于大多数人来说,典型的"陷阱"是使用==来比较两个字符串,当它们确实应该使用String类的equals()方法时.从上面可以看出,当两个引用引用同一个实际对象时,运算符只返回"true".但是,对于字符串,大多数用户想知道两个字符串的值是否相同 - 因为两个不同的String对象可能都具有相同(或不同)的值.
slctn = scnr.nextLine();
if (slctn.equals("a")){
travel exeTravel = new travel();
exeTravel.travel();
}else if (slctn.equals("b")){
learn exeLearn = new learn();
exeLearn.learn();
}else{
System.out.println("That is not a valid option");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3564 次 |
| 最近记录: |