Java方法打印其他东西
问题描述:
我正在Java上使用实例作为参数来写分数操作的一些方法,但出于某种原因,我没有得到,当我尝试打印来自另一个类的结果时,它会打印类似“(PackageName) (类名)@ 1497b7b1" 。 这只发生在“Suma”,“Resta”,“División”,“Multiplicación”方法中。 这里的代码,这样就可以更好地理解:Java方法打印其他东西
package fracciones;
public class Fraction {
private int Numerador;
private int Denominador;
public Fraction() {
Numerador = 0;
Denominador = 1;
}
public Fraction(int Num, int Den) {
Numerador = Num;
Denominador = Den;
}
public int getNumerador() {
return Numerador;
}
public int getDenominador() {
return Denominador;
}
public Fraction Suma(Fraction Suma) {
int Num = Suma.getNumerador();
int Den = Suma.getDenominador();
Fraction c = new Fraction();
c.Numerador = Numerador * Den + Denominador * Num;
c.Denominador = Denominador * Den;
return c;
}
public Fraction Resta(Fraction Resta) {
int Num = Resta.getNumerador();
int Den = Resta.getDenominador();
Fraction c = new Fraction();
c.Numerador = Numerador * Den - Num * Denominador;
c.Denominador = Denominador * Den;
return c;
}
public Fraction Multiplicación(Fraction Multiplicación) {
int Num = Multiplicación.getNumerador();
int Den = Multiplicación.getDenominador();
Fraction c = new Fraction();
c.Numerador = Numerador * Num;
c.Denominador = Denominador * Den;
return c;
}
public Fraction División(Fraction División) {
int Num = División.getNumerador();
int Den = División.getDenominador();
Fraction c = new Fraction();
c.Numerador = Numerador * Den;
c.Denominador = Denominador * Num;
return c;
}
public String ImpresiónFraction() {
String Text = Numerador + "/" + Denominador;
return Text;
}
public Float ImpresiónFloat() {
Float Float = new Float(Numerador);
Float Numero = Float.floatValue()/Denominador;
return Numero;
}
}
这个类印刷:
package fracciones;
public class FraccionCalc {
public static void main(String[] args) {
Fraction Una = new Fraction(1, 2);
Fraction Dos = new Fraction(8, 16);
System.out.println(Una.Resta(Dos));
System.out.println(Una.ImpresiónFloat());
}
}
答
你需要重写,并在您Fraction
类中定义toString()
自己,如果你想打印一个对象 - 否则你只会打印对象散列码。
例如,下面可能是这样的,你想要什么:
@Override
public String toString() {
return "Fraction [" + Numerador + "/" + Denominador + "]";
}
答
Fraction
,需要实现toString()
方法,因为它是目前使用Object.toString()
返回:
getClass().getName() + '@' + Integer.toHexString(hashCode())
实现示例:
class Fraction
{
@Override public String toString()
{
return Numerador + "/" + Denominador;
}
}
答
你的方法返回一个Fraction类型,这需要实现toString()方法,它控制对象的字符串表示形式。
或者,您可以更改方法以获得字符串类型的返回值。
答
您正在打印出对对象的引用。如果你想获得实际的整数值,你必须提供getter方法,或者你正在变量市民和直接通过Una.Num打印出来等等...
答
尝试做这个
System.out.println(Una.Resta(Dos).getNumerador() + Una.Resta(Dos).getDenominador());
在写变量名和方法名使用
骆驼和使用
帕斯卡情况下而写类:
答
在Fraction
类中添加这个方法
@Override
public String toString() {
return "Numerador: "+Numerador+", "+"Denominador: "+Denominador;
}
PS 名称。
答
Una.Resta()=>返回类Fraction的对象。 System.out.println =>需要打印一个字符串。所以它必须通过调用Object类的toString()方法将对象转换为字符串。所以你必须在Fraction类中实现这个方法来格式化你想要打印的字符串。
我认为这是因为你打印的是对象而不是对象的值。尝试打印object.Numerator和分母。 – karmanaut 2013-04-04 09:19:04
这就是你看到的对象哈希码。 – 2013-04-04 09:19:36