java中交换两个数的方法是什么 api有吗?

gpwoaibiancheng 2011-03-07 09:15:47
java中交换两个数的方法是什么 api有吗?
...全文
887 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainsEgo 2011-03-20
  • 打赏
  • 举报
回复
看API,有:
java.util.Collections.swap(List<?> list, int i, int j);

这个Collections是集合框架里的一个类,它把实现了List接口的数据中的i元素和j元素互换。
你所谓的是个类似的功能吧。

以此来看,建议你实现自己的swap方法,它是泛型的,可以接受任何类型。
为了实现这个swap,需要准备一个容器来装载需要交换的两个数据,
因为JAVA得方法调用中,参数的传递是 --值传递-- 所以不能用类似C的办法来实现。
当然了,应用泛型有个好处,避免错误的类型转换。
代码如下(大部分来自《JAVA核心技术》,用《Effective Java》优化过):

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mytester;

/**
*
* @author Rains.C
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Pair<Integer> p = new Pair(1, 2);
System.out.println(p);
System.out.println("After swap:");
System.out.println(p.swap());
}
}

class Pair<T> {
private Pair() throws CreationException{throw new CreationException();}
public Pair(T first, T second) {this.first = first;this.second = second;}

public void setFirst(T newValue) {first = newValue;}
public T getFirst() {return first;}

public void setSecond(T newValue) {second = newValue;}
public T getSecond() {return second;}

public Pair swap() {
T temp = second;
second = first;
first = temp;
return this;
}

@Override
public String toString() {
return first + " | " + second;
}

private T first;
private T second;

private static class CreationException extends Exception {
public CreationException() {
super("Don't use this Creator");
}
}
}
danliandejintou 2011-03-20
  • 打赏
  • 举报
回复
就这样一个简单的问题也要用方法?
为了用方法而方法?
danliandejintou 2011-03-20
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 hemowolf 的回复:]

引用 24 楼 zhuzeitou 的回复:
引用 18 楼 hemowolf 的回复:

楼上那么多人都是新手吗

java 里没有指针,不可能用个方法把两个数进行交换的


只是单纯的交换,而不是什么写个方法调用什么的还是可以的吧

比如这个

Java code

int a=1, b=2;
a^=b;b^=a;a^=b;


但是下面这样是不可以

……
[/Quote]
一个方法只能有一个返回值。
danliandejintou 2011-03-20
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 humanity 的回复:]

方法这个词有歧义,是 Java 里面的 Method 还是 "办法" 的意思?
如果是 Java 里面的 Method,那没有,“办法”倒是有。

上面的 + / - 的办法不好,可能超出精度范围,不如用 ^.^
[/Quote]
同意。
因为方法的返回值只能为一个对象。所以你必须先把2个数封进一个对象。
24K純帥 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inhibitory 的回复:]
不可能,因为Java没有指针,像C那种进行交换
[/Quote]
额。。
a1367949610 2011-03-19
  • 打赏
  • 举报
回复
最简单的交换两个值得方法就是 用数组对象存储,然后交换数组对象中的元素位置
//ChangeTheNumber1
public class ChangeTheNumber1{
public static void main(String args[]){
int[] a=new int[5];
initize(a);
int i=1,j=2;
Swap(a,i,j);
System.out.println(a[i]+","+a[j]);}
public static void Swap(int[] x,int i,int j)//用数组可以实现交换2个元素的值
{
int temp=x[i];
x[i]=x[j];
x[j]=temp;
}
public static void initize(int[] x){
for(int i=1;i<=5;i++)
{
x[i-1]=i;
}
}

}
solo_lee 2011-03-18
  • 打赏
  • 举报
回复
1楼的方法正解···还有5楼的方法也正解···有好几楼都说了以上两种方式···
humanity 2011-03-18
  • 打赏
  • 举报
回复
方法这个词有歧义,是 Java 里面的 Method 还是 "办法" 的意思?
如果是 Java 里面的 Method,那没有,“办法”倒是有。

上面的 + / - 的办法不好,可能超出精度范围,不如用 ^.^

dong_very_good 2011-03-18
  • 打赏
  • 举报
回复
x^=y;
y^=x;
x^=y;
小灰狼 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 zhuzeitou 的回复:]
引用 18 楼 hemowolf 的回复:

楼上那么多人都是新手吗

java 里没有指针,不可能用个方法把两个数进行交换的


只是单纯的交换,而不是什么写个方法调用什么的还是可以的吧

比如这个

Java code

int a=1, b=2;
a^=b;b^=a;a^=b;


但是下面这样是不可以

Java code

int a=1, b=……
[/Quote]


拜托,楼主说的是通过调用一个方法把两个数的值交换过来
aBOUNTWINTER 2011-03-09
  • 打赏
  • 举报
回复
int temp=a;
a=b;
b=temp;
yymn_love 2011-03-09
  • 打赏
  • 举报
回复
两个方法
一 int x = 1; int y = 2;
x = x + y;
y = x - y; y变为x
x = x - y; x变为y

二 int x = 1; int y = 2; int temp = 0;
temp = x;
x = y; x变为y
y = temp; y变为x
小灰狼 2011-03-09
  • 打赏
  • 举报
回复
楼上那么多人都是新手吗

java 里没有指针,不可能用个方法把两个数进行交换的
zhuzeitou 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 hemowolf 的回复:]

楼上那么多人都是新手吗

java 里没有指针,不可能用个方法把两个数进行交换的
[/Quote]

只是单纯的交换,而不是什么写个方法调用什么的还是可以的吧

比如这个

int a=1, b=2;
a^=b;b^=a;a^=b;


但是下面这样是不可以

int a=1, b=2;
swap(a,b);

void swap(int a, int b) {
a^=b;b^=a;a^=b;
}

G_beginner 2011-03-09
  • 打赏
  • 举报
回复
Collections.swap(List<?> list, int i, int j)
?LZ不会说的是这个吧
青色刀客 2011-03-09
  • 打赏
  • 举报
回复
用一个堆栈就可以了
先将两个数存进去,在pop出来就是对换之后的了
zhuzeitou 2011-03-08
  • 打赏
  • 举报
回复
x^=y;
y^=x;
x^=y;
ma309385560 2011-03-08
  • 打赏
  • 举报
回复
int x = 1;
int y = 2;

x = x+y;
y = x-y;
x = x-y;
cl56636575 2011-03-08
  • 打赏
  • 举报
回复
各种方法,最简单的就是temp,不需要封装吧。要不你自己封装下好了。
qkniit 2011-03-08
  • 打赏
  • 举报
回复
必须用到第三个变量
加载更多回复(12)

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧