Java 将getter方法中的名称与用户输入字符串进行比较时出现问题
我在if语句中比较时遇到问题,在C编程中我使用“==”双等号来比较两个字符串 使用getter方法将字符串与新字符串进行比较如何。。。我尝试使用双等号,但系统提示我将其更改为: if(条目[i].getName().equals(EName)) 顺便说一下,这是我的全部代码:Java 将getter方法中的名称与用户输入字符串进行比较时出现问题,java,if-statement,conditional-operator,getter,Java,If Statement,Conditional Operator,Getter,我在if语句中比较时遇到问题,在C编程中我使用“==”双等号来比较两个字符串 使用getter方法将字符串与新字符串进行比较如何。。。我尝试使用双等号,但系统提示我将其更改为: if(条目[i].getName().equals(EName)) 顺便说一下,这是我的全部代码: import javax.swing.JOptionPane; import javax.swing.JTextArea; public class AddressBook { private AddressB
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
public class AddressBook {
private AddressBookEntry entry[];
private int counter;
private String EName;
public static void main(String[] args) {
AddressBook a = new AddressBook();
a.entry = new AddressBookEntry[100];
int option = 0;
while (option != 5) {
String content = "Choose an Option\n\n"
+ "[1] Add an Entry\n"
+ "[2] Delete an Entry\n"
+ "[3] Update an Entry\n"
+ "[4] View all Entries\n"
+ "[5] View Specific Entry\n"
+ "[6] Exit";
option = Integer.parseInt(JOptionPane.showInputDialog(content));
switch (option) {
case 1:
a.addEntry();
break;
case 2:
break;
case 3:
a.editMenu();
break;
case 4:
a.viewAll();
break;
case 5:
break;
case 6:
System.exit(1);
break;
default:
JOptionPane.showMessageDialog(null, "Invalid Choice!");
}
}
}
public void addEntry() {
entry[counter] = new AddressBookEntry();
entry[counter].setName(JOptionPane.showInputDialog("Enter name: "));
entry[counter].setAdd(JOptionPane.showInputDialog("Enter add: "));
entry[counter].setPhoneNo(JOptionPane.showInputDialog("Enter Phone No.: "));
entry[counter].setEmail(JOptionPane.showInputDialog("Enter E-mail: "));
counter++;
}
public void viewAll() {
String addText= "";
for (int i = 0; i < counter; i++) {
addText = addText+(i+1)+ entry[i].getInfo()+ "\n";
}
JOptionPane.showMessageDialog(null, new JTextArea(addText));
}
public void editMenu() {
int option = 0;
while (option != 6) {
String content = "Choose an Option\n\n"
+ "[1] Edit Name\n"
+ "[2] Edit Address\n"
+ "[3] Edit Phone No.\n"
+ "[4] Edit E-mail address\n"
+ "[5] Back to Main Menu";
option = Integer.parseInt(JOptionPane.showInputDialog(content));
switch (option) {
case 1:
editName();
break;
case 2:
editAdd();
break;
case 3:
editPhoneNo();
break;
case 4:
editEmail();
break;
case 5:
return;
default:
JOptionPane.showMessageDialog(null, "Invalid Choice!");
}
}
}
public void editName() {
EName = JOptionPane.showInputDialog("Enter name to edit: ");
for (int i = 0; i < counter; i++) {
if (entry[i].getName().equals(EName)) {
//JOptionPane.showMessageDialog(null, "found");
entry[i].setName(JOptionPane.showInputDialog("Enter new name: "));
}else {
JOptionPane.showMessageDialog(null, "Entered Name not Found!");
}
}
}
public void editAdd() {
EName = JOptionPane.showInputDialog("Enter name to edit: ");
for (int i = 0; i < counter; i++) {
if (entry[i].getName().equals(EName)) {
//JOptionPane.showMessageDialog(null, "found");
entry[i].setAdd(JOptionPane.showInputDialog("Enter new Address: "));
}else {
JOptionPane.showMessageDialog(null, "Entered Name not Found!");
}
}
}
public void editPhoneNo() {
EName = JOptionPane.showInputDialog("Enter name to edit: ");
for (int i = 0; i < counter; i++) {
if (entry[i].getName().equals(EName)) {
//JOptionPane.showMessageDialog(null, "found");
entry[i].setPhoneNo(JOptionPane.showInputDialog("Enter new Phone No.: "));
}else {
JOptionPane.showMessageDialog(null, "Entered Name not Found!");
}
}
}
public void editEmail() {
EName = JOptionPane.showInputDialog("Enter name to edit: ");
for (int i = 0; i < counter; i++) {
if (entry[i].getName().equals(EName)) {
//JOptionPane.showMessageDialog(null, "found");
entry[i].setEmail(JOptionPane.showInputDialog("Enter new E-mail add: "));
}else {
JOptionPane.showMessageDialog(null, "Entered Name not Found!");
}
}
}
}
请原谅我的密码。。。我是java的新手。。。。请帮忙
如果用户输入等于条目[i].getName(),则我要遍历所有数组并编辑特定的细节
非常感谢…如果要比较字符串的表示而不是其对象标识,请使用equals()
假设我们有:String s=“hello”代码>
如果要比较字符串的表示形式而不是其对象标识,请使用equals()
假设我们有:String s=“hello”代码>
至少有三件事需要了解:
Java:==测试两个引用是否指向同一个对象,而equals测试两个对象是否具有相同的内容。因此,即使两个字符串具有相同的内容,==可能给出false,而s1.equals(s2)将给出true。你可以在谷歌上找到这方面的信息
C:在C中,不应该使用==或来比较两个字符串。C中的字符串通常是char*(或constchar*),您应该将它们与strcmp进行比较(否则您将遇到与Java中相同的问题)
C++:std::string的实例可以使用==进行比较。至少有三件事需要了解:
Java:==测试两个引用是否指向同一个对象,而equals测试两个对象是否具有相同的内容。因此,即使两个字符串具有相同的内容,==可能给出false,而s1.equals(s2)将给出true。你可以在谷歌上找到这方面的信息
C:在C中,不应该使用==或来比较两个字符串。C中的字符串通常是char*(或constchar*),您应该将它们与strcmp进行比较(否则您将遇到与Java中相同的问题)
C++:std::string的实例可以使用==。不要使用=
来比较C中的字符串。会发生不好的事情。那么这里的实际问题是什么?你真的使用=
来比较“C”中的字符串吗?正如nmichaels所评论的,这不会给出预期的结果,因为它比较的是内存中两个字符串的地址,而不是字符串本身的内容。不要用=
来比较C中的字符串。会发生不好的事情。那么这里的实际问题是什么?你真的用=
来比较“C”中的字符串吗? 正如nmichaels所评论的,这不会给出预期的结果,因为它会比较内存中两个字符串的地址,而不是字符串本身的内容。事实上,“hello”==“hello”
也是正确的(因为相同的编译时常量字符串是相同的字符串对象)。。。因为我在比较两个字符串。equals更好地使用thanksNow,我们必须希望这个sayHello()
方法做一些其他事情,然后返回“Hello”
:-p“hel”。concat(“lo”)
几乎肯定是一个不同的字符串对象,而新字符串(“Hello”)
肯定是。@Paŭlo:是的。。。我假设:-P刚刚测试了你的两个例子,你又一次是正确的!事实上,“hello”==“hello”
也是正确的(因为相同的编译时常量字符串是相同的字符串对象)。。。因为我在比较两个字符串。equals更好地使用thanksNow,我们必须希望这个sayHello()
方法做一些其他事情,然后返回“Hello”
:-p“hel”。concat(“lo”)
几乎肯定是一个不同的字符串对象,而新字符串(“Hello”)
肯定是。@Paŭlo:是的。。。我假设:-P刚刚测试了你的两个例子,你又一次是正确的!
public class AddressBookEntry {
private String name;
private String add;
private String phoneNo;
private String email;
private int entry;
public String getAdd() {
return add;
}
public String getEmail() {
return email;
}
public int getEntry() {
return entry;
}
public String getName() {
return name;
}
public String getPhoneNo() {
return phoneNo;
}
public void setAdd(String add) {
this.add = add;
}
public void setEmail(String email) {
this.email = email;
}
public void setEntry(int entry) {
this.entry = entry;
}
public void setName(String name) {
this.name = name;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
public String getInfo() {
String Info = "NAME\tADDRESS\tPHONE NO.\tE-MAIL ADD\n"
+ name + "\t " + add + "\t " + phoneNo + "\t " + email + "\n";
return Info;
}
public String getInfo2() {
String content = "INFORMATION:\n\n"
+ "Name: " + name + "\n"
+ "Address: " + add + "\n"
+ "Tel. No: " + phoneNo + "\n"
+ "Email Add: " + email + "\n\n";
return content;
}
}
s == s
=> true // they are the *same* object
"hello" == new String("hello") // see comment below...
=> false // they are different objects representing the same string of text
"hello".equals("hello")
=> true
s.equals("hello")
=> true