java高手请进

请先看以下程序(编译和运行均成功)publicclassArray1{staticintsum=0;intarr[]=newint[10];//非arr[]=newint... 请先看以下程序(编译和运行均成功)
public class Array1{
static int sum=0;
int arr[]=new int[10];//非 arr[]=new int[10];
Array1(){
for(int i=0;i<arr.length;i++){
//arr[i]=Integer.parseInt(args[i]);
arr[i]=i;
}
}
public void Add(){
for(int i=0;i<arr.length;i++){
sum+=arr[i];
}
}
public static int ReturnAdd(){
return sum;
}
public void PrintNumbers(){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
public void PrintAdd(int sum){
System.out.println("这些数的总和是"+sum);
}
public static void main(String args[]){
Array1 ff=new Array1();//Array1 ff=new Array1;
System.out.print("这些数字分别是: ");
ff.PrintNumbers();
ff.Add();
ff.PrintAdd(ff.sum);
}
}
我有两个问题:(1)sum和数组arr是不是一定要为static类型
(2)最后一句如果写成ff.PrintAdd(ff.ReturnAdd)就不对了,提示找不到符号,为什么??
希望高手指教
展开
 我来答
百度网友eefaf3700
2011-05-02 · TA获得超过380个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:136万
展开全部
1.sum一定要是static,因为你在静态方法中调用:
public static int ReturnAdd(){
return sum;
}
简单说下,当你没有Array1 ff=new Array1();的时候,还没有创建对象ff,也就是在内存中没有开辟空间,是不可以调用ReturnAdd()静态,但你可以使用Array1.ReturnAdd(),原理就不说了,,自己记住先,,以后为懂的。arr不用static.
2.ff.PrintAdd(ff.ReturnAdd());最后少了一对括号;调用静态方法,推荐使用类调用,ff.PrintAdd( Array1.ReturnAdd());
凝结阳光
2011-05-02 · 超过17用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:0
展开全部
1 不一定,sum是全局变量,应该设置为public或者protected。
2 public static int ReturnAdd(){ 和设置成static有关吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
logic1965
2011-05-02 · TA获得超过551个赞
知道小有建树答主
回答量:282
采纳率:0%
帮助的人:212万
展开全部
1..因为有静态函数访问sum,所以sum一定要static,arr不要。
2.要改成ff.PrintAdd(ff.ReturnAdd()),因为ReturnAdd是个函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式