当前位置: 主页 > 科技内涵 >金豪登录网址_java如何实现2个数之间互换 >

金豪登录网址_java如何实现2个数之间互换

java如何实现2个数之间互换


利用异或(a^b)^b 等a,进行交互需要设置临时变量也不会围。代码如下:import java.util.Scanner;public class woo {public static void main(String args[]) {Scanner scan =new Scanner(System.in);System.out.println("输入两个数a, b");int a = scan.nextByte();int b = scan.nextByte();System.out.printf("交:a = %d, b = %d ", a, b);a = a^b;b = a^b;a = a^b;System.out.printf("交换后:a = %d, b = %d", a, b);}}扩展资料:值传递就是在方法调用的时候,实参是将自己的一份拷贝赋给形参,在方法内,对该参数值的修改不影响原来实参。引用传递是在方法调用的时候,实参将自己的地址传递给形参,此时方法内对该参数值的改变,就是对该实参的实际操作。在java中只有一种传递方式,那就是值传递.可能比较让人迷惑的就是java中的对象传递时,对形参的改变依然会意向到该对象的内容。参考资料:百度百科——参数传递
swap( int x, int y)实现对x和y值的交换但从函数定况看,只是对形行了数据修改,不会影响到实参数因此,你的结果不会变化 , 仍然是a[0]= 1 a[1]= 2正确方法:int a=1,b=0;System.out.println("a=" + a + ";b=" + b);int tmp;tmp=a;a=b;b=tmp;System.out.println("a=" + a + ";b=" + b);扩展资料: 对于下述程序,试分析用传值、传地址、传数组方法传递参数时所得的打印结果。PROGRAM SS(input,output);VARA,B:integer;PROCEDURE P(x,y,z:integer);begin y:=y+1;z:=z+x;end;BEGINA:=2;b:=3;P(A+B,A,A);writeln (‘A=‘,A);END解答(1)传值:把实参的值计算出来传给形参。在调用过程P时,形参x=5;y=2;z=2出过程P时,形参x=5;y=3;z=7这并不把结果回送到主程序,所以结果为A=2(2)传地址:实参计算出结果,把地址送形参。设变量T=A+B(结果为5)。执行时把T、A、A的地址(设为addr1,addr2,addr2)送给形参:x=daar1,y=addr2,z=addr2。T的地址addr1即x→T(5)A的地址addr2即y→A(2)A的地址addr2即z→A(2)执行过程P即为:①y↑:=y↑+1;②z↑:=z↑+x↑所以,①为A:=A+1=3②为A:=A+T=8。 因此,最后A=8.(3)传数组:相当于执行 A:=2;B:=3; A:=A+1;A:=A+(A+B)writeln(‘A=‘,A);所以,结果为A=9。参考资料:百度百科-参数传递参考资料:百度百科- Java(计算机编程语言)

本回答被网友采纳因为你的是INT 类型所以传时候传的是值。不会影响a。
直接a进行操作:
int [] a={1,2};
swap(a,0,1);
public static void swap(int[] args,index1,index2) {
int temp = 0 ;
temp= args[index1];
args[index1] = args[index2];
args[index2] = temp;
}

你看下这个:
本回答被提问者采纳因为java传递的个简单类型(int型),所以是,也就是把值给了num1和num2,无论num1和num2怎么变怎,跟a[0]和a[1]都无任何关系了,a[0]a[1]不会有任何变化。
要想使a[0]和a[1]也跟着改变,就必须要传引用,java里规定传递简单类型都是传值,传递对象才是引用传递,你这个代码可以改变一下(只传两个值过去是绝对不可能的):

public class TestLoopTryCatch {
public static void main(String args[]) {
int [] a={1,2};

swap(a);
System.out.println(a[0]);
System.out.println(a[1]);

}

public static void swap(int a[]) {
int temp;
temp= a[0];
a[0] = a[1];
a[1] = temp;

}

}基本数据类型是无法再其他方法中改变值的,只用引用数据类型才能这样修改
java中如何交换两个引用类型的变量
如 A a=new A("2");
System.out.println(a.hashcode());//及a的物理地(与内存地对应)
A b=new A("1");
System.out.println(b.hashcode());//b的物理地址
A c=a;
a=b;
b=c;
System.out.println(a.hashcode());
System.out.println(b.hashcode());
输出的结果将会是a和b的hashcode()互换了,这了他们的内存和物理地址都互换了对你们无语,把这两个变量数组中或者集合中,然后调法传入该参数,并,交换后返回该数组就行了!要好好利用堆的机制以及数组和集合的性质
//例子,没测试,不过就是这个理念,另外不返回obj也可以,只要你上层传入的obj引用地址不变,可以继续使用。
public class DemoTest{
public static void main(String[] args){
String a="对象1";

int b=10;//对象2
Object[] obj={a,b};
obj=swap(obj);//置换成功!
}
public Object[] swap(Object[] obj){
Objecttemp=obj[0];
obj[0]=obj[1];
obj[1]=temp;
return obj;
}
}
//程序这东西,没有做不到,只有想不到同一类的可以, A a=new A("2");System.out.println(a.hashcode());//及a的物理地址(存地址相对应)
A b=new A("1");System.out.println(b.hashcode());//b的物理地址
A c=a;
a=b;
b=c;
System.out.println(a.hashcode());
System.out.println(b.hashcode());
输出的结果将ab的hashcode()互换了,这说明了他们的内存和物理地址都互换了本回答被网友采纳这个让我想起一道题目 swap传参交换数值
基本数据类型传参,传递的JNI应该能实现你的要求,纯Java不太好实现追问

我们老师说的,我今天想了半天没想出来
说什么引用的引用,我试了半天也还是不行追答

你是不是像不通过第三个参数就直接交换两个数字?另外Java中对象全是引用类型,基本变量才是值类型追问

不是,就是通过方法来改变两个引用变量的地址追答

似乎有点理解错误,你是想这样?voidswap(Objecta,Objectb);
swap(a,b);

之后ab就互换了?这样的话,纯Java应该是做不到的


如何在Java中实现交换两个变量值的方法
public class Demo {
public static void main(String[] args) {
//这个静态方法传递两个int 值就是了。
exchange(2, 6);
}

public static void exchange(int a, int b) {
int temp = 0;
temp = a;
a = b;
b = temp;
System.out.println("a=" + a);
System.out.println("b=" + b);

}
}这个方法没听说过,因为交换起来很简单。封装显得大材小用了。
int a=5;
int b=6;
int temp;
temp=a;
a=b;
b=temp;
这样就可以了,其他类型的情况类似本回答被网友采纳
任意输入两个数分别赋给a,b将两个数的值交换位置,怎么拿java编程
#include
main()
{
int a,b,t;
scanf("%d%d",&a,&b);
t=a;
a=b;
b=t;
printf("a=%d,b=%d\n",a,b):
}
我刚刚入门请高手帮我本回答被网友采纳

publicstaticvoidmain(String[]args){
inta=100;
intb=1000;
int[]values={a,b};
swap(values);
a=values[0];
b=values[1];
}
publicstaticvoidswap(int[]values){
inttempVal=values[0];
values[0]=values[1];
values[1]=tempVal;
}
无人家说Javavoid swap(int a,int b){
int temp = 0;
temp =a;
a = b;
b=temp;
}int a=1,b=2;
int temp = 0;
temp =a;
a = b;
b=temp;


上一篇:
下一篇:

中国科学技术馆|科技馆|中国科技馆
科技内涵|科技企业|科技园区|科技导读|网站地图