2016-11-29 94 views
1

好的,在我的cs类中,我们有一个赋值,它要求我们返回一个值,然后将其设置为零。我不知道如何做到这一点,而不使用第二个变量(这将会破坏需求),所以我会很感激一些帮助。这里是确切的要求。设置一个值为零

“有一个use()方法,它返回points字段中包含的值,它也将points字段重置为零,您将不得不考虑操作顺序以使其正确工作。 “

package Game; 

import java.util.Random; 

public class HealthPotion 
{ 
    private int points; 
    boolean Haspotion; 
    HealthPotion() 
    { 
     Random num1 = new Random(); 
     int num = num1.nextInt(10)+1; 
     points=num*10; 
    } 
    public int Use() 
    { 
     return points; 
    } 
    public int getPoints() 
    { 
     return points; 
    } 
} 
+0

您可以使用setter函数设置的值为零 – Coder

+0

我可以,但说的也是我的要求之外。 –

+3

如果您有特殊要求,请特别说明。 – lee

回答

3

真的可能不是没有滥用 finally块,即

try { 
    return points; 
} finally { 
    points = 0; 
} 

但是这真的很难相信那会是什么希望,因为它不写这样的代码是个好主意。

+0

这是一个很好的! –

+1

@StefanFreitag不,没有什么*很好*关于它:) – Kayaman

+0

可能是一个家庭作业。有时当我读到一些问题时,我想知道老师是否喜欢不好的习惯...... +1都是一样的:) – davidxxx

0

包括像这样的setter方法。

public void setValue(){ 
this.points=0; 
} 

获得该值后调用此方法。

0

这个怎么样?

public int Use() 
    { 
     int tmp = points; 
     points = 0; 
     return tmp; 
    } 

它具有局限性,特别是如果points可以通过不同的线程,而此方法执行而改变。但是,如果你在单线程环境中工作,这应该没问题。

0

这应该工作

int points = 5; 

public void test(){ 
    System.out.println(use() +" " + points); 

} 

private int use(){ 
    return points - (points = 0); 
} 

返回5 0

+0

这是行不通的,因为在评估过程中按照优先顺序丢失点的值。它等于'return 0 - 0;',这不符合问题。 – lee