2015-07-03 106 views
-2

我正在研究简单的Java应用程序。应用程序应该能够比较变量值。例如,在我的class A中,有一个名为alt_value的变量。Java - 如何仅比较一个变量值与以前的值?

所以,这个alt_value是从无人机获得这个值(我设法从无人机获得价值)。我需要做的就是将当前的alt_value与之前的值进行比较。如果当前的alt_value高于以前的值,则应显示“正在上升!”或相反亦然。

这可怎么办?任何想法?谢谢。

+3

显示你的代码,你试图做这个操作 –

+0

你可以改变类A吗?然后最简单的解决方案将保存2个值在你的对象(活跃和旧)。否则,使用Observeables/ValueChangeListener – ceekay

+0

提示:无需查看代码;你可能会考虑这样的问题:“当我想要比较两个值时,我需要多少个变量,一个还是两个?” – GhostCat

回答

0

在班级中维护两个变量。一个用于新价值,另一个用于旧价值。每当你获得新的价值时,将它与具有前值的变量进行比较。

+0

没必要。在获得新价值之前储存就应该足够了,像我提议的那样说什么? – JavaHopper

0

使变量“alt_value”私人并创建一个setter“setAlt_value(..)”。在setter中比较alt_value中的现有值和您在setAlt_value()中获取的新值。

0

您可以在设置新值时执行以下操作。

class Foo{ 
int alt_value; 
String status; 

//setter for the alt_value will be called to set new value 
void setAltValue(int new_alt_value){ 
     if(new_alt_value > alt_value){ 
      status = "Going up"; 
     } 
     this.alt_value = new_alt_value; 
    } 

} 
1

somtehing这样?

public static void main(String[] args) { 
     String[] test = {"A", "B", "B", "C", "D", "E"}; 
     String prev = ""; 
     for (int i = 0; i < test.length; i++){ 
      if (test[i].equals(prev)){ 
       System.out.println("equals: " + prev); 
      } 
      prev = test[i]; 
     } 
    } 
0

或者是这样的:

class A { 
    private int alt_value = 0; 

    public int getAlt_value() { 
     return alt_value; 
    } 

    public void setAlt_value(int alt_value) { 
     this.alt_value = alt_value; 
    } 

    public boolean compare(int value) { 
     boolean goingUp = value > alt_value; 
     alt_value = value; 
     return goingUp; 
    } 
    } 

然后你卡恩电话:

A instance = new A(); 
if (instance.compare(4)) { 
    // show "Going Up"! 
} 
0

你需要有一个临时变量来存储一个值。这样的事情应该适合你

prev_alt_value = alt_value; 
alt_value = droneMethodCall(); 
if(alt_value > prev_alt_value) 
    System.out.println("Going Up!");