public static void processtrans()throws FileNotFoundException{
Scanner input = new Scanner(transFile);
String line = input.nextLine();
double dollar = 0;
int transNum = 1;
while (input.hasNextLine()) {
int Space = line.indexOf (" ");
int Space2 = line.indexOf (" ", Space + 1);
String action = line.substring(0,Space);
if (action == "ORDER"){
int Space3 = line.indexOf (" ", Space2);
String isbn = line.substring(Space + 1, Space2);
int num = Integer.parseInt(line.substring(Space2 + 1, Space3));
int custNum = Integer.parseInt(line.substring(Space3 + 1));
System.out.println("Number= " + num);
System.out.println("Customer number= " + custNum);
}
line = input.nextLine();
}
}
虽然我正在调试这段代码,因为它编译但没有打印任何东西,我看到它读取第一行输入分隔第一个单词并将其置于String动作中但之后它会看到动作是否为“ORDER”或不然后跳过一切我不明白为什么有人可以帮助我?
答案 0 :(得分:2)
答案 1 :(得分:2)
java中的==
运算符会比较标识的对象(即,如果它们都引用相同的内存区域,则返回true
)。为了比较相等的对象(例如,如果它们具有相同的值,则返回true
),您应该使用重载的equals(Object)
方法:
if (action.equals("ORDER")) {
// ...
}
答案 2 :(得分:1)
在Java ==
中检查两个引用是否在内存中引用相同的对象。要检查两个字符串对象与其内容有意义相等,您必须使用equals()
方法,如下所示
if (action.equals("ORDER")){
答案 3 :(得分:0)
在Java中,如果两个对同一个Object的引用都在String对象上使用==实际上返回true。
为了检查字符串相等性,有几种方法可以做到这一点。
对象有equals(Object o)
方法,通常允许您比较对象值并查看它们是否相等。
如果是字符串,
String foo = "foo";
String bar = "foo";
if(foo.equals(bar)) {
// Hooray
}
然而,还有另一种方法可以解决这个问题。有些人建议使用字符串文字进行测试,以避免出现NullPointerException。
例如:
"foo".equals(bar);