A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Test
{
    public static void main()
    {
        int a = 10;
        int b = 20;
        /*调用方法*/
        meth(a,b);  //要求在调用方法之后打印出a=100,b=200 请写出meth()的代码
        System.out.println("a="+a);
        System.out.println("b="+b);
     }
}

QQ图片20150811234959.png (63.91 KB, 下载次数: 22)

QQ图片20150811234959.png

24 个回复

倒序浏览
原谅我没看出亮点在哪里?
回复 使用道具 举报
public void jisuan(int a,int b)
{
        for(int c=0;c<10;c++)
                {
                   a=a+10;
                   b=b+10;
                }
}

这样子可以吗?
回复 使用道具 举报
b=b*a
a=a*a
回复 使用道具 举报
cat73 黑马帝 2015-8-12 10:49:40
报纸
办法也不是没有,不过根据Java的限制,想要去修改a跟b的值基本是不可能做到的(如果可以请指出- - 咱也是新手),所以可以考虑另外一种思路,那就是对输出语句进行Hook,这点在我以前的帖子里有提到过,原帖如下↓
http://bbs.itheima.com/thread-171478-1-1.html
那么问题就简单了,将单个int参数的输出语句重写即可,重写为输出传入参数的10倍:
  1. private static void meth() {
  2.     System.setOut(new PrintStream(System.out) {
  3.         public void println(int x) {
  4.             super.println(x * 10);
  5.         }
  6.     });
  7. }
复制代码

因懒得开Java的IDE,以上代码没有做测试,见谅。


回复 使用道具 举报
这个这么做到的?
回复 使用道具 举报
rxtm 中级黑马 2015-8-12 15:38:02
7#
meth(int x,int y){
    a=100;
    b=200;
}
不就得了

点评

这样是不行的哟,Java限制在函数内无法对外部传入的参数进行修改哟。  发表于 2015-8-12 16:59
回复 使用道具 举报
嗨这是啥问题啊  不就这么写么
回复 使用道具 举报
method1(int a,int b){
  system.out.printl("a=100,b=100");
}
或者
method1(int a,int b){
a=100,b=100;  
system.out.printl("a="+a+"b="+b);

}  这样不就行了

点评

这样会输出两句的啦~  发表于 2015-8-12 17:00
回复 使用道具 举报
boboyuwu 发表于 2015-8-12 16:05
method1(int a,int b){
  system.out.printl("a=100,b=100");
}

这也叫有意思啊  就是弄个method1方法  a ,b值传进来然后改变a,b值不就行了
回复 使用道具 举报
星语千寻 来自手机 中级黑马 2015-8-12 18:33:21
11#
路过。。。。。
回复 使用道具 举报
  1. public static void meth(int a,int b)
  2.         {
  3.                  System.out.println("a="+100);
  4.                  System.out.println("b="+200);
  5.                  System.exit(10);
  6.         }
复制代码

虽然比较逗必!但就是这么简单!

点评

如果还有后续代码... 这样会影响到的...  发表于 2015-8-12 21:19

评分

参与人数 1黑马币 +1 收起 理由
蓬头小道士 + 1 赞一个!

查看全部评分

回复 使用道具 举报
pengbeilin 发表于 2015-8-12 20:09
虽然比较逗必!但就是这么简单!

这个太机智了,直接调用+退出。。。原谅我笑一会儿
回复 使用道具 举报
黄蒙 发表于 2015-8-12 20:47
这个太机智了,直接调用+退出。。。原谅我笑一会儿

因为楼主说只要打印的结果是那个就好了,而实参的值的值应该是改不了(以为现在所学的java知识来看的话),
如果是C的话就很简单。{:2_32:}
回复 使用道具 举报
楼主这个问题,让我看了真长知识 谢谢
回复 使用道具 举报
定义一个方法,让a和b都乘以10
回复 使用道具 举报
......................
回复 使用道具 举报
private static void meth(int a, int b) {
                a = a*10;
                b = b*10;
                System.out.println("a=" + a);
                System.out.println("b=" + b);
                System.exit(0);
        }
回复 使用道具 举报
本帖最后由 pengbeilin 于 2015-8-12 22:06 编辑

我现在只能用我知识范围内的东西去解决,而且并没有违背楼主的规则~    -。-当然我相信会有更好的解决方法~
回复 使用道具 举报
java是值传递,所以还是12楼的方法正确
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马