大資料之JAVA基礎(五):迴圈和陣列方法練習

葛紅富發表於2018-03-22
案例1:編寫 1+3+5+7+......+99的值
/*
* 求1-99的基數和
*/
public static void fun01()
{
int i = 1;
int sum = 0;
for(;i<100;i+=2)
{
sum += i;
}
System.out.println("0-99基數和: "+ sum);
}


案例2:求所有的水仙花數(100-999之間,每位數字立方之和等於該3位數本身。如153 = 1*1*1 + 3*3*3 + 5*5*5

/*
* 輸出所有的水仙花數
*/
public static void func02()
{
for(int i = 100;i<1000;i++)
{
int bai = i / 100 % 10;
int shi = i / 10 % 10;
int ge = i % 10;
if(bai * bai *bai + shi *shi*shi + ge*ge*ge == i)
{
System.out.println(i);
}
}
}

案例3: 利用for迴圈列印26個大寫26個小寫英文字母

/*
* 列印大小寫英文字母
*/
public static void func03()
{
//A-Z : 65 - 91
//a-z : 97 - 122
for(int i=97;i<123;i++)
{
if(i>='a' && i<='z' || i>= 'A' && i<='Z')
System.out.println((char)i);
}
}


案例4:列印99乘法表

/*
* 列印99乘法表
*/
public static void func04()
{
for (int i = 1; i <10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + " = " + i*j);
System.out.print(" ");
}
System.out.println();
}
}

案例5:編寫陣列的通用列印方法,例如列印(“【1,2,3,4,5】”)

/*
* 陣列通用列印方法
*/
public static void func05(int [] arr)
{
System.out.print('[');
for (int i = 0; i < arr.length; i++) {
if(i == arr.length -1)
System.out.print(arr[i]);
else
System.out.print(arr[i] + ",");
}
System.out.print(']');
}

案例6:實現陣列的逆序

/*
* 陣列逆序
* 思想:首位和末位交換,然後首位 + 1,末位 -1 ,再次交換,以此類推,直到首位大於或者等於末位
*/
public static void func06(int [] arr)
{
int start = 0; // 開始索引
int end = arr.length - 1; //末尾索引
for(start = 0 ; start <= end ; start ++,end--)
{
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
for (int i : arr) {
System.out.println(i);
}
}


案例7:陣列的氣泡排序

/*
* 陣列的氣泡排序(從小到大)
* 思想:外層i從0位置開始,內層j從其後一位(i+1)開始,比較(arr.length - 1 - i)次,進行比較和交換
*
*/
public static void func07(int [] arr)
{
for (int i = 0; i < arr.length - 1; i++) {
for(int j = i + 1; j < arr.length - 1 - i ; j ++)
{
if(arr[i] > arr[j] )
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] =temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}


案例8:有序陣列的折半查詢

/*
* 有序陣列的折半查詢
*/
public static int func08(int [] arr,int search)
{
int min = 0; //最小索引
int max = arr.length - 1; //最大索引
int mid = (max + min) /2; //折半
while(arr[mid] != search)
{
if(arr[mid] > search)
{
max = mid - 1;
}
else
{
min = mid + 1;
}
mid = (max + min) /2; //折半
if(min > max)
{
return -1;
}
}
return mid;
}



相關文章