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 多谢大神 谢谢!
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#反射解析数据内容,调用方法
主要是分享C#中的一些处理方法: 1.反射获取成员值 2.反射获取未知类型成员内容 3.反射获取成员工具类 这部分主要是为了拿到实例的时候我们可能不清楚实例或成员的类型,但知道起成员的名称或需要拿到其全部成员信息,这个时候就值得用到反射来获取类的详细信息了。 下面显示用反射来获取一个对象某个成员的值。
JSON对象调用方法
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。  在JSON中,有两种结构:对象和数组。     1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:     var o
spring之aop方法内部调用问题
现象描述:假设有一个service,其中有A B 两个方法,A B都被aop托管,且A中调用了B方法,这时请求方法A的时候只会触发A的aop逻辑而不会触发B的aop逻辑。public interface UserService { void test(); } public class UserServiceImpl implements UserService { @Overri
【javascript】Javascript中调用对象内函数的两种方式.
如下例子: var cal = { plus:function(x,y){ return x + y; }, reduce:function(x,y){ return x - y; }, multiply:function(x,y){ return x * y; }, divide:function(x,y){ return x / y; } }
【JavaScript】如何获取调用该函数的源对象(元素)
问题前提: 原本打算进行动态添加元素的,然后设置双击该元素删除该元素。 在原本就存在的元素上设置了onDbClick属性,再利用removeChild实现了。 在动态添加的元素上尝试设置ondbclick属性——失败(存在参数的时候不行,没参数正常);还试了几个,也是同样的问题。 然后便将方向转向如何获取调用该函数的源对象的问题上。 方法一: 也就是我自己原来用的方法。 将自己作为参
JS中函数调用的方法(this调用的方法)
JavaScript 函数有 4 种调用方式。 每种方式的不同方式在于 this 的初始化。 1.作为一个函数调用 function myFunction(a, b) { return a* b; } myFunction(10, 2); // myFunction(10, 2) 返回 20 或 function myFunction() { r
jQuery判断元素是否存在方法
最简单的办法是判断元素匹配长度 譬如HTML代码:<div class='mydiv'></div>通常我们的做法是 :if($('.mydiv').length>0)比较可靠且不会出错的做法是:if($('.mydiv').length && $('.mydiv').length>0)甚至能找到组合元素,如下,我们找一个id定义为div的元素里面是否包含img,代码如下:if ($("#div
python 动态调用模块内的函数
场景程序在运行的过程中,根据变量或者动态配置决定导入哪个模块的函数。实现1.同一个路径利用 getattr 动态调用函数:main.py 与 third_buy.py在同一个路径下# third_buy中有N个***_func(params)函数 import third_buythird_method = '%s_func' % method # 通过函数名的字符串来调用这个函数 res = ge
AOP无法切入同类调用方法的解决办法
@Controller @RequestMapping("/redis") public class RedisAction extends BaseAction { @Autowired private RedisService redisService; @Autowired private SysUserService sysUserService;
vue中methods一个方法调用另外一个方法
vue在同一个组件内; methods中的一个方法调用methods中的另外一个方法 可以在调用的时候  this.$options.methods.test2(); this.$options.methods.test2();一个方法调用另外一个方法; new Vue({ el: '#app', data: { test:111, }, methods