2017-03-28 16 views
-1

我在Java中,以下类:它有可能将类定义为双类型java?

public class Percentage 
{ 

    private double n; 

    Percentage (double n) 
    { 
     this.n=n; 
    } 

    public void setN() 
    { 
     this.n=n; 
    } 

    public double getN() 
    { 
     return n; 
    } 

    public double percntage() 
    { 
     return this.n/100; 
    } 
} 

这个类比例会返回一个双精度值,但问题是,我们不能做任何数学运算与值象下面这样:

public static void main (String args[]) 
{ 
    Percentage p = new Percentage(5); 
    double b=1; 
    b=p*12; // this is error because the class Percentage in not of type double 
} 

有没有办法使百分比类型双?

+1

使用您的getter getN() –

+2

不,'*'可能只对数字类型执行。只需通过调用'p.percntage()'或'p.getN()'(取决于你想要的)来问'p'什么值。由于该方法返回'double',所以在计算中使用它们的结果。 – Pshemo

+0

修正'setN'中的错误代码。 –

回答

3

这是一个错误,因为您将Percentage对象与double值相乘。 另一种方法是

public static void main (String args[]) 
{ 
    Percentage p = new Percentage(5); 
    double b=1; 
    b=p.getN()*12; 
} 
+0

很好的答案,但我的问题是如果我们可以使用百分比作为对象直接表现得像双倍,并且据我所知,我们不能 –

+0

你的问题根本没有意义。因为这个类可以有多个字段和方法,所以你不能只乘以这个类的对象而不能获得它的字段。 –

+0

@SaiedTrefi [什么是类?](http://www.wideskills.com/java-tutorial/java-classes-and-objects) –

1

你不能让类类型double。您可以改为使用n值执行操作。

b = p.getN()*12; 
1

您不能将类定义为double,因为double是原始类型。你可以做的是其他用户建议的内容:

p.getN(); 

它会返回你需要的double值。

1

不,你不能让它表现得像double,但是(如BigDecimal),你可以提供执行相关操作的方法。

因为你的代码似乎暗示n = 10意味着10%,即0.10一个因素,你可以做的方法这样的:

public double of(double value) { 
    return value * this.n/100d; 
} 

public double add(double value) { 
    return value * (100d + this.n))/100d; 
} 

,然后用它是这样的:

Percentage p = new Percentage(10); 
double input = 55; 
double d1 = p.of(input); // 10% of 55 = 5.5 
double d2 = p.add(input); // 55 + 10% = 60.5 
+0

我只需要明白,我不能让对象像双重行为,你的解决方案似乎没问题 –

相关问题