Java 方法的參數(shù)是簡單類型的時候,是按值傳遞的 (pass by value),所以Java里面不能實現(xiàn)和C中一樣的swap方法來交換兩個數(shù)的值。非要用的話只能這樣寫:
站在用戶的角度思考問題,與客戶深入溝通,找到雙橋網(wǎng)站設(shè)計與雙橋網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋雙橋地區(qū)。
//交換數(shù)組data中的第a和第b個元素
public?static?void?swap(int[]?data,?int?a,?int?b)?{
int?t?=?data[a];
data[a]?=?data[b];
data[b]?=?t;
}
估計不是你想要的效果。
?關(guān)于Java中參數(shù)和引用的問題建議看看下面的博文:
public?static?void?main(String[]?args)?{
//定義輸入對象s?
Scanner?s=new?Scanner(System.in);
System.out.print("輸入第一個數(shù)的值:\t");
int?number1=s.nextInt();
System.out.print("\n輸入第二個數(shù)的值:\t");
int?number2=s.nextInt();
System.out.println("number1的值:"+number1+"\t\t?number2的值:"+number2);//輸出交換前內(nèi)容
//定義中間變量temp進行交換(你小學老師問你:現(xiàn)在有紅墨水1瓶、藍墨水1瓶,要你將紅、藍兩種墨水交換瓶子,你是不是要找個空瓶子來處理)
int?temp=number1;
number1=number2;
number2=temp;
System.out.println("number1的值:"+number1+"\t\t?number2的值:"+number2);//輸出交后內(nèi)容
}
JAVA是面向?qū)ο蟮恼Z言,沒有象c中指針這樣危險的東西,要編這種簡單數(shù)學問題你最好用c,Pascal或者VB這樣的語言,用面向?qū)ο笳Z言解決有點大材小用,c你總會把,用c解決
#include stdio.h
void changeXy(int *x,int *y){
int *temp;
temp = x ;
x=y;
y=temp;
}
main(){
int a;
int b;
a=10;
b=8;
printf("輸出互換前手中的紙牌:");
printf("左手中的紙牌:%d",a);
printf("右手中的紙牌:%d",b);
printf("\n");
changeXy(a,b);
printf("輸出互換后手中的紙牌:");
printf("左手中的紙牌:%d",a);
printf("右手中的紙牌:%d",b);
}
也可以用java解決:
public class change{
private static int a,b;
public static void main(String args[]){
a=10;
b=8;
System.out.println("輸出互換前手中的紙牌:");
System.out.println("左手中的紙牌:"+a);
System.out.println("右手中的紙牌:"+b);
System.out.println();
changeXy();
System.out.println("輸出互換后手中的紙牌:");
System.out.println("左手中的紙牌:"+a);
System.out.println("右手中的紙牌:"+b);
}
public static void changeXy(){
int temp;
temp = a ;
a=b;
b=temp;
}
}
JAVA對兩個整數(shù)變量的值進行互換(不需要第三方變量)的程序如下:
方法一(加減法):
a?=?a?+?b;
b?=?a?-?b;
a?=?a?-?b;
方法二(異或運算):
a?=?a?^?b;
b?=?a?^?b;
a?=?a?^?b;
代碼實現(xiàn)如下:
public?class?Demo?{
public?static?void?main(String?[]?args){
int?m=2,n=3;
//method_1(m,?n);
method_2(m,?n);?????
}
/**
*?使用異或^
*明白一個數(shù),如果異或同一個數(shù)兩次,那么就等于本身
*/
private?static?void?method_3(int?m,?int?n)?{
m=m^n;
n=m^n;
m=m^n;
System.out.println("m="+m+"\tn="+n);
}
/**
*?使用自身的數(shù)組,加減運算
*/
private?static?void?method_2(int?m,?int?n)?{
m=m+n;
n=m-n;
m=m-n;
System.out.println("m="+m+"\tn="+n);
}
}
這么寫就沒錯誤了。
你要是用swap方法,應(yīng)該多個賦值
把swap的結(jié)果,賦值給xy