public class B {
int n;
static int sum=0;
void setN(int n){
this.n=n;
}
int getSum(){
for(int i=1;i<=n;i++){
sum=sum+i;
}
return sum;
}
}public class A {
public static void main(String args[]){
B b1=new B();
B b2=new B();
b1.setN(3);
b2.setN(5);
int s1=b1.getSum();
int s2=b2.getSum();
System.out.println(s1+s2);
}
}
运行后输出为27,我想问为什么不是45呢?
我的想法是这样的:第一次b1.getSum();这里执行后sum的值是6,那么执行b2.getSum();
这里的时候sum=6;然后做循环的话就应当相当于
int sum=6;
for(int i=1;i<=5;i++){
sum=sum+i;
}
这样的话结果就应该是45了。
int n;
static int sum=0;
void setN(int n){
this.n=n;
}
int getSum(){
for(int i=1;i<=n;i++){
sum=sum+i;
}
return sum;
}
}public class A {
public static void main(String args[]){
B b1=new B();
B b2=new B();
b1.setN(3);
b2.setN(5);
int s1=b1.getSum();
int s2=b2.getSum();
System.out.println(s1+s2);
}
}
运行后输出为27,我想问为什么不是45呢?
我的想法是这样的:第一次b1.getSum();这里执行后sum的值是6,那么执行b2.getSum();
这里的时候sum=6;然后做循环的话就应当相当于
int sum=6;
for(int i=1;i<=5;i++){
sum=sum+i;
}
这样的话结果就应该是45了。
解决方案 »
- 这样的桌面程序开发,应该用什么开发工具好一些?
- 类 传递参数的方式,值传递还是地址传递呢?
- java下用什么包或者开源组件可以自定义windows计数器呀
- 能帮忙看一下程序吗 ?
- 给计算机专业的大学生推荐一个好的学习网站有兴趣的进来看下
- 在开发GUI程序时如何使用spring和hibernate?
- 多个线程因为得不到锁而阻塞,当锁被释放时,哪个线程会得到锁呢?
- 关于SCJP考试?
- jdk在什么地方可以下载?给我提供一个地址好么/
- 用javaApplet的URL,BufferRead等打开服务器上的文件说无权访问主机名称,但在DOS下可以读出该文件?
- 新手学习java,关于自定义窗口显示文本内容时,内容出现省略号
- JApplet程序,使用URL类定位资源,不知道为什么总是有错误
b2.setN(5);/*sum依次为7,9,12,16,21*/
你算错了
for(int i=1;i<=5;i++){
sum=sum+i;
}
6+1+2+3+4+5 = 21 b2.getSum() ==21 b1.getSum() = 6 --> 27 ;正确啊
public static void main(String args[]){
B b1=new B();
B b2=new B();
b1.setN(3);
b2.setN(5);
int s1=b1.getSum(); //s1 = 6 ,此时 sum =6
int s2=b2.getSum(); // s2 = sum +1 + 2 + 3 + 4 + 5 = 6+ +1 + 2 + 3 + 4 + 5 = 21 此时 sum = 21System.out.println(s1+s2); // 27
}
}
眼睁睁的看着楼层在增加,为什么csdn总是有漏洞啊
,呵呵,我们该换论坛
static new的时候 sum从新变回了0
所以s1 和 s2 开始的时候是一样的都是从sum=0开始
s1。get=1+2+3=6
s2.get=1+2+3+4+5=21
固 ————》》》 6+21=27
楼主,明白?
所以s1 和 s2 开始的时候是一样的都是从sum=0开始
第二次怎么变成了 6 啊???????
甚是不解??????????????????????????