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)就不对了,提示找不到符号,为什么??
希望高手指教 展开
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)就不对了,提示找不到符号,为什么??
希望高手指教 展开
3个回答
展开全部
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());
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());
展开全部
1 不一定,sum是全局变量,应该设置为public或者protected。
2 public static int ReturnAdd(){ 和设置成static有关吧。
2 public static int ReturnAdd(){ 和设置成static有关吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1..因为有静态函数访问sum,所以sum一定要static,arr不要。
2.要改成ff.PrintAdd(ff.ReturnAdd()),因为ReturnAdd是个函数。
2.要改成ff.PrintAdd(ff.ReturnAdd()),因为ReturnAdd是个函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询