1. 程式人生 > >用Java編寫基礎小程式&&經典案例

用Java編寫基礎小程式&&經典案例

     如果是剛接觸或者剛學習java,練習一些基礎的演算法還是必須的,可以提升思維和語法的使用。

1、輸出兩個int數中的最大值

import java.util.Scanner;

public class demo {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("請依次輸入兩個整數:a,b(以空格隔開)");
		/*比較兩個數的大小*/
		int a = scanner.nextInt();
		int b = scanner.nextInt();
		int max;
		if(a >= b){
			max = a;
		}else {
			max = b;
		}
		System.out.println("最大值為"+max);
		}
	}
}
2、輸出三個int數中的最大值
package demo;

import java.util.Scanner;

public class demo {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("請依次輸入兩個整數:a,b(以空格隔開)");	
		int a = scanner.nextInt();
		int b = scanner.nextInt();
		int c = scanner.nextInt();
		scanner.close();
		/*方法一*/
		int d=(a>b)?a:b;
		int e=(d>c)?d:c;
		System.out.println("最大值為"+e);
		
		/*方法二*/
		if(a>b && a>c){
			System.out.println("最大值為"+a);
		}else if(b>c && b>a){
			System.out.println("最大值為"+b);
		}else if(c>b && c>a){
			System.out.println("最大值為"+c);
		}else{
			System.out.println("出現異常");
		}
	}
}
3、編寫程式判斷某一個年份是否是閏年
package demo;

import java.util.Scanner;
/*判斷閏年
    由使用者輸入任意一個年份,能被4整除但不能被100整除,或者能被400整除,是閏年。 
    要求判斷一個年份是否為閏年。 
    要求輸出:此年份是否是閏年
 */
public class demo {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("請輸入年份:");
		int year = scanner.nextInt();
		
		/*方法一*/
		if((year % 4 ==0 && year % 100 !=0) || year%400 ==0){
			System.out.println("這個年份是閏年");
		}else{
			System.out.println("這個年份不是閏年");
		}
		
		/*方法二*/
		boolean isLeapYear = (year % 4 ==0 && year % 100 !=0) || year%400 ==0;
		String string = isLeapYear?year+"是閏年":year+"不是閏年";
		System.out.println(string);
		
	}
}

4、完成成績等級輸出程式

    如果使用者輸入的分數正確(0-100),則根據表-1中的規則計算該分數所對應的的級別,並計算結果。

package demo;

import java.util.Scanner;

/*
 * 成績等級劃分表
 * >= 90  A
 * >=80   B
 * >=60   C
 * <60    D
 * 
 * 分數範圍:0-100
 * 
 * 需要有2個判斷*/
public class demo {
	public static void main(String[] args) {
		 Scanner scanner = new Scanner(System.in);
		 System.out.println("請輸入分數:");
		 double score = scanner.nextDouble();
		 scanner.close();
		 
		 if(score < 0 || score >100){
			 System.out.println("輸入的分數不在0-100之間,不符合要求");
		 }else if(score >= 90){
			 System.out.println("A");
		 }else if(score >= 80){
			 System.out.println("B");
		 }else if(score >= 60){
			 System.out.println("C");
		 }else{
			 System.out.println("D");
		 }
	}
}
5、完成命令解析程式      問題:有一個命令解析程式,該程式提供三個功能選型供使用者選擇,使用者選擇某功能後,程式在介面上輸出使用者所選擇的的功能名稱。程式的互動如圖:
package demo;

import java.util.Scanner;
/*
 * 有一個命令解析程式,該程式提供三個功能選型供使用者選擇,
 * 使用者選擇某功能後,程式在介面上輸出使用者所選擇的的功能名稱。
 * 
 * */
public class demo {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("請選擇功能:1.顯示全部記錄  2.查詢登入記錄 0.退出");
		int command = scanner.nextInt();
		scanner.close();
		
		switch (command) {
		case 0:
			System.out.println("歡迎使用");
			break;
		case 1:
			System.out.println("顯示全部記錄……");
			break;
		case 2:
			System.out.println("查詢登入記錄……");
			break;

		default:
			System.out.println("輸入錯誤!");
			
		}
	}
}
6、完成收銀櫃臺收款程式      編寫一個收銀櫃臺收款程式。根據單價、購買數量以及收款進行計算並輸出應收金額和找零;當總價大於或者等於500,享受8折優惠。控制檯互動如下:
package demo;

import java.util.Scanner;
/*
 * 需求:
 * 編寫一個收銀櫃臺收款程式。根據單價、購買數量以及收款進行計算並輸出應收金額和找零;
 * 當總價大於或者等於500,享受8折優惠。
 * 
  */
public class demo {
	public static void main(String[] args) {
			Scanner scanner = new Scanner(System.in);
			System.out.println("請輸入單價(¥):");
			double price = scanner.nextDouble();
			
			System.out.println("請輸入數量:");
			double amount = scanner.nextDouble();
			
			System.out.println("請輸入收款金額:");
			double count = scanner.nextDouble();
			
			double totalMoney = price*amount;
			
			if(totalMoney > 500){
				totalMoney = totalMoney*0.8;
			}
			
			double change = count - totalMoney;
			System.out.println("應收金額為:"+totalMoney + "找零為:"+change);
			
	}
}
7、java從鍵盤輸入三個整數,實現從小到大排序
package demo;

import java.util.Scanner;

/*
 * java從鍵盤輸入三個整數,實現從小到大排序
 * 
 **/
public class demo {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("請輸入三個整數,以空格隔開:");
		
		int a = scanner.nextInt();
		int b = scanner.nextInt();
		int c = scanner.nextInt();
		
		scanner.close();
		System.out.println("輸入的值為:a = " + a + ",  b = " + b + ", c = " + c);
		if(a > b){
			if ( b > c) {
				System.out.println("排序後的值為:" + c + "," + b + "," + a);
			}else if( c > a){
				System.out.println("排序後的值為:" + b + ","  + a + "," + c);
			}else{
				System.out.println("排序後的值為:" + b + "," + a + ","  + c);
			}
		}else{
			if(c < a){
                System.out.println("排序後的值為:" + c + "," + a + "," + b);
            }else if(c > b){
                System.out.println("排序後的值為:" + a + "," + b + "," + c);
            }else{
                System.out.println("排序後的值為:"+ a + "," + c + "," + b);
            }
		}
	}
}
8、計算個人所得稅       北京地區的個人所得稅計算公式:              應納稅額 = (工資薪金所得 - 扣除數)*適用稅率 - 速算扣除數       其中,扣除數為3500,適用稅率以及速算扣除數如下表所示:
package demo;

import java.util.Scanner;
/*
 * 北京地區的個人所得稅計算公式:
		應納稅額 = (工資薪金所得 - 扣除數)*適用稅率 - 速算扣除數
	其中,扣除數為3500
*/
public class demo {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("請輸入你的稅前工資:");
		int salaryBeforeTax = scanner.nextInt();
		scanner.close();
		
		int taxSalary = salaryBeforeTax - 3500;
		double tax;
		
	   /*	方法一*/
        tax = taxSalary<0?0.0:
            taxSalary<=1500?taxSalary*0.03:
                taxSalary<=4500?taxSalary*0.1-105:
                    taxSalary<=9000?taxSalary*0.2-555:
                        taxSalary<=35000?taxSalary*0.25-1005:
                            taxSalary<=55000?taxSalary*0.3-2755:
                                taxSalary<=80000?taxSalary*0.35-5505:
                                    taxSalary*0.45-13505;
        System.out.println("個人應繳納稅款為:"+tax);
      
        /*方法二*/
        if( taxSalary < 0 ){
        	tax = 0;
        }else if( taxSalary <= 1500){
        	tax = taxSalary*0.03;
        }else if( taxSalary <= 4500){
        	tax = taxSalary*0.1-105;
        }else if( taxSalary <= 9000){
        	tax = taxSalary*0.2-555;
        }else if( taxSalary <= 35000){
        	tax = taxSalary*0.25-1005;
        }else if(  taxSalary <= 55000){
        	tax = taxSalary*0.3-2755;
        }else if(  taxSalary <= 80000){
        	tax = taxSalary*0.35-5505;
        }else{
        	tax = taxSalary*0.45-13505;
        }
        System.out.println("個人應繳納稅款為:"+tax);
	}
}
9、輸入年份和月份,輸出天數
package demo;

import java.util.Scanner;
/*
 	提示:
	1.需要判斷是否是閏年,2月份的天數跟是否是閏年有關係;
	2.用switch-case判斷每個月的天數
	
	*/
public class demo{
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("請輸入年份:");
		int year = scanner.nextInt();
		System.out.println("請輸入月份:");
		int month = scanner.nextInt();
		
		int dayNum = theDayNum(month); //先根據月份得出天數,如果是閏年,對2月份的天數重新獲取
		
		if(isLeapYear(year)){
			if(month == 2){
				dayNum ++;  //如果是閏年,2月份增加一天
			}
			System.out.print(year + "是閏年,");
		}else{
			System.out.print(year + "不是閏年,");
		}
		
		System.out.println(year + "年" + month + "月份共有" + dayNum + "天");
	}
	
	/*判斷是否是閏年
	 * 能被4整除但不能被100整除,或者能被400整除,是閏年
	 */
	public static  boolean  isLeapYear(int year) {
		if((year % 4 ==0 && year % 100 !=0) || year%400 ==0){
			return true;
		}else{
			return false;
	   }
	}
	
     /*判斷天數*/
	public  static int theDayNum(int month) {
		switch (month) {
        case 1:  
            return 31;  
        case 2:  
            return 28;  
        case 3:  
            return 31;  
        case 4:  
            return 30;  
        case 5:  
            return 31;  
        case 6:  
            return 30;  
        case 7:  
            return 31;  
        case 8:  
            return 31;  
        case 9:  
            return 30;  
        case 10:  
            return 31;  
        case 11:  
            return 30;  
        case 12:  
            return 31;  
        default:  
        	System.out.println("對不起,您輸入的月份有誤!");  
        	return 0; 
		}
		
	}
}
10、輸出九九乘法表
package demo;

/* author:wendy
 * 問題:
 * 		直接輸出九九乘法表
 * */
public class demo {

	public static void main(String[] args) {
		//i變數用於控制行數
		for(int i = 0; i <= 9; i++) {
			//j變數用於控制每行中參與計算的數值
			for(int j = 1; j <= i; j++) {
				System.out.print(j + "*" + i + "=" + i*j + "\t");
			}
			//每行輸出之後需要換行
			System.out.println();
		}
	}
}
11、隨機產生一個從0-100之間的整數,判斷是否是質數      質數又稱素數,是指在一個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數 。
package demo;

import java.util.Random;

public class primeNum {
	public static void main(String[] args) {
		int num;
		Random random = new Random();
		num = random.nextInt(100);
		System.out.println("隨機產生的數為:" + num);
		System.out.println(isPrime(num));
	}
	
	public static boolean isPrime(int num) {
		if(num < 2) {
			return false;
		}

		if(num == 2) {
			return true;
		}

		if(num % 2 == 0) {
			return false;
		}

		for(int i = 3; i <= Math.sqrt(num); i += 2) {
			if(num % i == 0) {
				return false;
			}
		}
		return true;
	}
}
12、查詢陣列最小值,並將陣列擴容成新陣列
package demo;

import java.util.Arrays;
import java.util.Random;
/*
 * author:wendy
 * 問題:隨機產生10個從0-100之間的整數,並查詢最小值;
 *     將該陣列擴容成新陣列,把最小值存在新陣列的第一個位置。
 * 步驟:
 * 1.構造一個長度為10的陣列,利用Random隨機產生10個0-100之間的整數;
 * 2.尋找最小值,利用for迴圈
 * 3.擴容  利用Arrays.coprOf()構造新陣列,將其長度設定為11
 * 4.遍歷新陣列,從後往前遍歷,以此賦值,然後將2中找到的最小值存在陣列的第一個
 * */
public class copyOf {

	public static void main(String[] args) {
		int [] arr = new int[10];
		
		//隨機產生10個 0-100之間的整數
		Random random = new Random();
		for(int i = 0; i < 10; i ++) {
			arr[i] = random.nextInt(100);
		}
		//列印陣列的內容
		System.out.println("隨機產生的陣列為:" + Arrays.toString(arr));
		
		//查詢最小的值
		int min = arr[0];
		for(int j = 1; j < 10; j ++) {
			if(min > arr[j]) {
				min = arr[j];
			}
		}
		System.out.println("該陣列最小的值為:" + min);
		
		//擴容,將最小值存在擴容之後的第一個
		int [] newArr = Arrays.copyOf(arr, 11);
		
		//從後往前遍歷,將前面的值賦給後面的值,然後將第一個的值賦為最小值min
		for(int k = newArr.length-1; k >=1; k --) {
			newArr[k] = newArr[k-1];
		}
		//將第一個的值賦為最小值min
		newArr[0] = min;
		//列印陣列的內容
		System.out.println("擴容之後的陣列為:"+ Arrays.toString(newArr));
	}

}