+=,-=,*=,/=隱含了強制類型轉換。 邏輯運算中,&和&&的區別為: &:無論左邊為真假,右邊都參與運算 &&:如果左邊為假,則右邊不參與運算,如果左邊為真,右邊參與運算。 異或操作可以實現兩個整數的交換(不需要額外空間開銷): a, b; a = a ^ b; b = a ^ b; a =
+=,-=,*=,/=隱含了強制類型轉換。
邏輯運算中,&和&&的區別為:
&:無論左邊為真假,右邊都參與運算
&&:如果左邊為假,則右邊不參與運算,如果左邊為真,右邊參與運算。
異或操作可以實現兩個整數的交換(不需要額外空間開銷):
a, b;
a = a ^ b;
b = a ^ b;
a = a ^ b;
實現兩個整數交換的4種常用方法:
1) 引入第3個變數temp
2) 使用異或操作符^
3) 利用加減法運算
a = a + b;
b = a – b;
a = a – b;
4) 一條搞定
b = (a + b) – (a = b);
用二維數組保存並輸出楊輝三角形(不同的行的數據個數不同):
/**
*
*/
package com.yan.javaTest;
import java.util.Scanner;
/**
* @author Yan
*
*/
public class YangHuiSanJiao {
/**
* Yang hui san jiao xing.
*
* 1
* 1 1
* 1 2 1
* 1 3 3 1
* 1 4 6 4 1
* 1 5 10 10 5 1
*
* 1. Mei hang de di yi lie he zui hou yi lie dou shi 1;
* 2. Cong di san hang kai shi zhongjianlie de shuzhi wei shangyihang de qianyilie he dangqianlie
* shuzhi zhihe.
*
*/
public YangHuiSanJiao() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
// 數組賦值
int[][] yangHuiSanJiaoXing(int[][] str){
for(int i=2;i<str.length;i++){ //from the third line str[2][];
for(int j=1;j<str[i].length-1;j++){ //from str[i][1] ---- str[i][length-2];
str[i][j]=str[i-1][j-1]+str[i-1][j];
}
}
return str;
}
// 數組格式初始化
int[][] arrInit(int[][] str,int n){
for(int i=0;i<n;i++){
str[i]=new int[i+1];
str[i][0]=1;
str[i][i]=1;
}
return str;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Please input a number to assign the lines of the triangle:");
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int[][] arr=new int[n][];
YangHuiSanJiao ys = new YangHuiSanJiao();
arr=ys.arrInit(arr, n);
arr=ys.yangHuiSanJiaoXing(arr);
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
sc.close();
}
}