public class Fraction
{
public Franction(int n, int d)
{
int num = n;
int denom = d;
}
public static void main(String[] args)
{
Fraction f1 = new Fraction(5,10);
System.out.println("Fraction = " + f1);
}
}
您好,我正在尝试学习Java ...我正在编写的这本书表明上面代码的输出应该打印“Fraction = 5/10”,但是当我尝试它时,我只是收到“ Fraction = Fraction @ 33469a69“我假设是打印它存储位置的引用?我理解如何使用构造函数我只是没有收到预期的输出。任何帮助将不胜感激...谢谢!
答案 0 :(得分:6)
要获得所需的输出,您需要在toString()
类中重载Franction
方法。此方法用于确定对象的文本表示。默认情况下,它是ClassName@hashCode
。
此外,您可能希望将在构造函数中收到的值存储为字段。现在,您将分子和分母存储在构造函数的局部变量中,一旦构造函数退出就会被销毁。
尝试这样的事情:
public class Fraction
{
private final int num
private final int denom;
public Franction(int n, int d)
{
this.num = n;
this.denom = d;
}
@Override
String toString()
{
return String.format("%d/%d", num, denom);
}
public static void main(String[] args)
{
Fraction f1 = new Fraction(5,10);
System.out.println("Fraction = " + f1);
}
}
答案 1 :(得分:2)
您必须在override
课程中toString
Fraction
()函数。
返回对象的字符串表示形式。通常,toString方法返回一个“文本表示”此对象的字符串。
所以
Fraction@33469a69 is the textual representation of Fraction class.
要获取所需的输出,请在Object类中的重写toString
方法中编写逻辑并在那里返回字符串。
简单的toString
实现看起来像
@Override
public String toString() {
StringBuilder result = new StringBuilder();
result.append(this.someMemeber); //will be in String format
result.append(this.someMemeber);
return result.toString();
}
答案 2 :(得分:2)
您需要覆盖相同
的toString
方法
public String toString(){
StringBuilder stringToReturn = new StringBuilder();
stringToReturn.append(this.num);
stringToReturn.append("/");
stringToReturn.append(this.denom);
return stringToReturn.toString();
}
答案 3 :(得分:1)
试试这个
public class Fraction
{
private int num;
private int denom;
public Franction(int n, int d)
{
num = n;
denom = d;
}
public int getNum()
{
return num;
}
public int getDenom()
{
return denom;
}
public static void main(String[] args)
{
Fraction f1 = new Fraction(5,10);
System.out.println("Fraction = " + f1.getNum() + "/" + f1.getDenom());
}
}
替代方案(更好的方法)
public class Fraction
{
private int num;
private int denom;
public Franction(int n, int d)
{
num = n;
denom = d;
}
public int getNum()
{
return num;
}
public int getDenom()
{
return denom;
}
@Override
public String toString(){
return (f1.getNum() + "/" + f1.getDenom());
}
public static void main(String[] args)
{
Fraction f1 = new Fraction(5,10);
System.out.println("Fraction = " + f1 );
}
}
您需要更多地了解封装,Object类和toString()方法。
快乐编码:)
答案 4 :(得分:1)
尝试以下方法:
public class Fraction {
private final int num;
private final int denom;
public Fraction(int num, int denom) {
this.num = num;
this.denom = denom;
}
@Override
public String toString() {
return num + "/" + denom;
}
public static void main(String[] args) {
Fraction f1 = new Fraction(5, 10);
System.out.println("Fraction = " + f1);
}
}
您必须将值存储在您创建的对象中。然后覆盖toString
的{{1}}方法以获得所需的输出。
输出:
Object
答案 5 :(得分:0)
您所做的就是打印出对象。
如果要打印Object的内容,您将在该类中创建一个toString方法。