问题描述
- 调用方法和方法内元素问题
-
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); 能运行啊
解决方案
1所對應的問題是:你的print1方法是非靜態的,那麼你調用靜態的sop能不報錯嗎。
2所對應的x是方法內的局部變量,在方法外肯定是不能訪問的
解决方案二:
你这段代码存在的问题有好几个,
首先,你的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的打印方法。
时间: 2024-11-03 21:07:54