gpt4 book ai didi

java - Java 程序中令人困惑的输出

转载 作者:行者123 更新时间:2023-11-29 06:34:41 25 4
gpt4 key购买 nike

我是 Java 编程的新手,我正在遵循 Udemy 上的指南。我正在通过类进行数据操作,这是一个简单的名称格式化程序。预定义的字符串(名称的一部分)被插入到类中以对其进行格式化。

这个程序使用了两个类:Name.java 和 NameTest.java(驱动文件)

Name.java:

package javaProject;

public class Name {
private String first;
private String middle;
private String last;

public Name(String f, String m, String l){
first = f;
middle = m;
last = l;
}

public Name(String f, String l){
first = f;
middle = "";
last = l;
}

public Name(String f){
first = f;
middle = "";
last = "";
}

public Name(){
first = "";
middle = "";
last = "";
}
///
public String displayName(){
return first + " " + middle + " " + last;
}


public static void main(String[] args){

}

}

NameTest.java:

package javaProject;

public class NameTest{
public static void main(String[] args){
Name myName = new Name("Damon", "myMiddleName", "myLastName");
System.out.println("My Name: " + myName.toString());
}

}

输出:

My Name: javaProject.Name@35afe17b

知道为什么我在指定输出应该是一个字符串后得到这个吗?我不确定如何解决这个问题,因为我还是 Java 新手。

最佳答案

重命名您的方法,displayName 不会覆盖 Object.toString()这就是你想要的;

// public String displayName(){ // <--- toString()
public String toString() {
return first + " " + middle + " " + last;
}

虽然还有第二种选择(但请注意 toString() 的优势),那就是

public static void main(String[] args){
Name myName = new Name("Damon", "myMiddleName", "myLastName");
System.out.println("My Name: " + myName.displayName()); // <-- or this,
// System.out.println("My Name: " + myName); // <-- but the advantage of performing
// <-- an override on toString() is
// <-- that this implicit `toString()`
// <-- will work.
}

关于java - Java 程序中令人困惑的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23485239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com