我是java的新手,我需要一些帮助。我创建了一个类;
public class asdd {
String name;
String Lastname;
int age;
public asdd(String value1,String value2,int value3){
this.name=value1;
this.Lastname=value2;
this.age=value3;
}
}
然后我写了一些代码来做实践,但我遇到了如下控制语句的问题。虽然输入是"迈克"我的程序绕过if并运行else语句。 感谢。
import java.util.Scanner;
public class dd {
public static void main(String[] arguments){
asdd person=new asdd("mike","angel",21);
Scanner input= new Scanner(System.in);
String control=input.nextLine();
if (control==person.name)
System.out.println("hi baby");
else
System.out.println(person.Lastname);
}
}
此外,我在运行程序后收到错误。
答案 0 :(得分:4)
由于此网站上的快速搜索会很快显示,您应该使用equals()
对象String
对象代替==
。前者按字典顺序比较字符串,而后者比较对象引用。所以你想要:
if (control.equals(person.name))
而不是:
if (control==person.name)
顺便说一句,班级名称应以大写字母开头,而不是小写字母。此外,您还应明确指定Asdf
类变量的可见性:具体而言,最好只通过getter访问它们,而不是像您一样直接访问它们。
答案 1 :(得分:1)
使用String.equals()
比较Java中的字符串文字,而不是==
像这样更改代码
if(control.equals(person.name))
答案 2 :(得分:1)
可悲的是,java不是javascript,也不是其他许多合理使用==
的语言。
==
比较identity - 仅当两个对象是相同的对象时才为true。
.equals()
来比较值:
if (control.equals(person.name))
一般认为java不会像你期望的那样使用==
的“错误”。对于其他一些java“错误”,请参阅this answer。
答案 3 :(得分:0)
==运算符用于数值。对于字符串,请使用.equals方法:
String s1 = "value", s2 = "value";
if (s1.equals(s2)) {
// do your code here
}