Java 如何判断int是否已更改
我想知道如何判断int是否已更改(在程序中)。 比如if语句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 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;
}
}