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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天在练习写代码,突然用到交换两个数,不是数组,就是两个 int 变量,
想在另一个类中写一个交换的方法,可是Java又不能传递指针,这样传递进去两个数,
在类A中,a,b的值肯定是不会交换的。那应该怎么办呀?(数组方法除外)
(我以前学了点C++,现在也全忘光了)是不是有个引用?用引用可不可以呀?
class A

{
    int a=1;
    int b=2;
    new B().swap(参数);
}
class B
{
    public 返回类型 swap(参数)
    {
        交换a与b
    }
}
class Demo
{
    public static void main(String[] args)
    {
        int a,b;
        A ca = new A();
        a = ca.a;
        b = ca.b;
        System.out.println("交换后:a="+a+",b="+b);
    }
}

16 个回复

倒序浏览
这个问题确实有难度么?还是我问的太水了?
回复 使用道具 举报
不难,可以用第三个参数做交换的中间变量
回复 使用道具 举报
class AA {
        int a = 5;
        int b = 6;

        public void swap() {
                a = b + (0 * (b = a));
                System.out.println("a b交换后: a =" + a + "\n b =" + b);
        }
}

class BB {
        public void swap(AA a) {
                a.swap();
        }
}


///调用
        AA a = new AA();
                BB b = new BB();
                b.swap(a);
回复 使用道具 举报
有三种方法
1,开发时用,使用第三方变量的形式,因为阅读性强。
int a=1,b=2,c;
c=a;
a=b;
b=c;

2,(不需要第三方变量)如果两个整数的数值过大,会超出int范围,会强制转换。不建议用。
int a = 1, b =2;
a = a + b;
b = a - b;
a = a - b;

3,两个整数变量的值进行互换 (不需要第三方变量)
int a = 1, b =2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
回复 使用道具 举报
阳光的嘉主角 发表于 2014-8-8 16:06
class AA {
        int a = 5;
        int b = 6;

哥哥,看清楚题目……,变量a,b是在调用swap()的类里边
回复 使用道具 举报
地狱天堂 发表于 2014-8-8 16:06
有三种方法
1,开发时用,使用第三方变量的形式,因为阅读性强。
int a=1,b=2,c;

兄弟,你没理解我的意思。。。。。。
回复 使用道具 举报
吥洅ㄨ错过ㄩ 发表于 2014-8-8 13:49
不难,可以用第三个参数做交换的中间变量

哥们,你是不是看错题目了,你真照我这个格式写下来,恐怕定义两个中间变量,也不能行吧。
回复 使用道具 举报
地狱天堂 发表于 2014-8-8 16:06
有三种方法
1,开发时用,使用第三方变量的形式,因为阅读性强。
int a=1,b=2,c;

正解,赞一个!
回复 使用道具 举报
无法实现
但是可以传入数组 交换数组中的两个数的值  然后返回数组
回复 使用道具 举报
代码如下:
  1. class A

  2. {
  3.     int a=1;
  4.     int b=2;
  5.     new B().swap(a,b);
  6. }
  7. class B
  8. {
  9.     public 返回类型 swap(int a,int b)
  10.     {
  11.         int c=0;
  12.         c=a;
  13.         a=b;
  14.         b=c;
  15.         return a,b;
  16.     }
  17. }
  18. class Demo
  19. {
  20.     public static void main(String[] args)
  21.     {
  22.         int a,b;
  23.         A ca = new A();
  24.         a = ca.a;
  25.         b = ca.b;
  26.         System.out.println("交换后:a="+a+",b="+b);
  27.     }
  28. }
复制代码
回复 使用道具 举报

这个…………return 还可以返回俩值么??
还有第10行的返回类型到底是啥?
回复 使用道具 举报
是不是真的没有办法了:'(
回复 使用道具 举报
小黑子 发表于 2014-8-21 09:03
是不是真的没有办法了

你需要返回的值是什么类型的,返回值类型就是什么
这里,你可以把int a 和int b 放到 数组中。
比如:
int c[] = new int[2];
c[0] = a;
c[1] = b;

回复 使用道具 举报
曾宇 发表于 2014-8-22 01:35
你需要返回的值是什么类型的,返回值类型就是什么
这里,你可以把int a 和int b 放到 数组中。
比如:

这不还是用到了数组么…………没有别的方法了是吧,谢谢啦。
回复 使用道具 举报
数组可以实现直接访问地址…………
回复 使用道具 举报
草鱼狂飙 发表于 2014-8-22 21:25
数组可以实现直接访问地址…………

我想知道不用数组能不能做。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马