Java 如何判断int是否已更改

Java 如何判断int是否已更改,java,Java,我想知道如何判断int是否已更改(在程序中)。 比如if语句 int i = 2; int a = 1; while(1 < 2) { if(i % 100 == 0) i++; } if(i //Then checks if it changed) { System.out.println("Changed :D"); } inti=2; INTA=1; 而(1

我想知道如何判断int是否已更改(在程序中)。 比如if语句

int i = 2;
int a = 1;

while(1 < 2) {
if(i % 100 == 0) i++;
}

if(i //Then checks if it changed) {
   System.out.println("Changed :D");
}
inti=2;
INTA=1;
而(1<2){
如果(i%100==0)i++;
}
if(i//然后检查它是否更改){
System.out.println(“更改:D”);
}

有没有办法判断变量i在程序中是否发生了变化?

在单独的变量中跟踪i的原始值,并将i与该值进行比较?

因为这是Java,这些变量是类的数据成员吗?在这种情况下,给他们
private
访问权限,并提供getter和setter。如果您愿意,setter可以通知您。

这似乎是多余的,因为程序员应该知道值存储的时间和位置。如果你没有,也许可以用调试器来调试@shoover的答案是最灵活的,不管您可能会在多少次意外情况下更改值,而无需在无限循环中添加代码行

// Your int variable
int i = 0;
// A scratch variable
int prev_value_of_i = i;

// Call this code to check whether i has changed since last call
if(i != prev_value_of_i) {
    System.out.println("Changed :D");
    prev_value_of_i = i;
}
class TalkativeInt{
     private int x;
     TalkativeInteger(int x){
          this.x = x;
     }
     public void set(int a){
         System.out.println("Changed!!   "+x+" to "+a);
         x = a;
     }
     public int get(){
         //System.out.println("Accessed - that tickles");
         return x;
     }

}

而(1<2)
闻起来很难闻……我猜你在找
如果((a%100)==0)i++。。。a++
要增加
i
每次
a
上升100倍?如果您真的希望while循环无限期重复,请执行
while(true){/…
并在其块内某处提供一个break语句来停止它。
while(1<2)
很奇怪。如果if语句在一个循环内会怎样……我不知道,如果呢?你尝试了什么?循环内的if语句与循环外的if语句没有太大区别。我的意思是变量会不断变化。你需要更具体地说明你在问什么,但我最初的建议是正确的。Keep跟踪i的“原始”值,无论何时何地,当您想知道它是否已更改时,将其与i进行比较。
if(!valueChanged)
是多余的。只要
valueChanged=true;
就足够了,除非你想在它第一次变为
true时添加其他要做的事情。谢谢ajb。我认为设置“valueChanged=true;”是多余的。:)我可以看到,如果它已经是
true,那么将它设置为
true可以被视为redund但是添加一个检查并不能增加任何可读性,而且会减慢速度。如果将其设置为
true
要求程序访问互联网并将变量值存储在远程计算机或其他设备上,则情况会有所不同。:)请不要使用“下面”这样的词,因为StackOverflow喜欢改变答案的顺序。
class TalkativeInt{
     private int x;
     TalkativeInteger(int x){
          this.x = x;
     }
     public void set(int a){
         System.out.println("Changed!!   "+x+" to "+a);
         x = a;
     }
     public int get(){
         //System.out.println("Accessed - that tickles");
         return x;
     }

}