2 zxy cola zxy_cola 于 2016.03.24 20:09 提问

调用方法和方法内元素问题

import java.util.*;
public class AA
{
public static void main(String[] args)
{
BB b = new BB();
b.print();
}

public static void sop(Object obj)
{
    System.out.println(obj);
}   

}

class BB
{
public void print1()
{
int[] arr = {1,2,3,4};

    for(int i : arr)
    {
        AA.sop(i);
    }
}

Arrays.sort(arr);

public void print2()
{
    int x = 4;
}

AA.sop(x);

}

1.为什么Arrays.sort(arr); 会调用失败???
2. AA.sop(x); 为什么调用失败 方法print2()为public 内元素int x 为默认 可以在方法外调用啊

http://www.cnblogs.com/elleniou/archive/2012/04/27/2473050.html
上面这个网页中的代码 为什么Arrays.sort(arr1); 能运行啊

2个回答

Crabime
Crabime   2016.03.24 20:22
已采纳

1所對應的問題是:你的print1方法是非靜態的,那麼你調用靜態的sop能不報錯嗎。
2所對應的x是方法內的局部變量,在方法外肯定是不能訪問的

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.24 20:34

你这段代码存在的问题有好几个,
首先,你的BB类没有print方法,所以你的AA类的main中b.print();调用有编译错误。
其次,方法调用必须放在代码块里面,你的Arrays.sort(),AA.sop(x),这两句方法调用的放置有问题。
方法放在方法外面肯定是错误的。应该放在某个方法里面,或者类的代码块中。
最后,你的语法知识可能不全的情况下,对于编译器给出的错误信息,你可以查看原因,方法:定位到红色错误行,点击键盘ctrl+1(数字1)这个是Eclipse的自动提示快捷键,可以查看编译错误原因。
大概猜测你是想排序,修改你的代码如下:

 import java.util.*;

public class AA {
    public static void main(String[] args) {
        BB b = new BB();
         b.print1();
         b.print2();
    }

    public static void sop(Object obj) {
        System.out.println(obj);
    }

}

class BB {
    public void print1() {
        System.out.println("print1方法。");
        int[] arr = { 8, 2, 3, 4,1 };
         Arrays.sort(arr);
        for (int i : arr) {
            AA.sop(i);
        }
    }


    public void print2() {
        System.out.println("print2 方法。");
        int x = 4;
         AA.sop(x);
    }

}

这样就行了,print1中先排序,然后再调用AA的打印方法。

zxy_cola
zxy_cola 多谢大神 谢谢!
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!