作業1003

package org.westos_Homework01;
/*1.考試成績已經保存在數組scores中,依次爲 89,23,64,91,119,52,73,-23

要求根據通過自定義方法來找出其中前三名,將數組成績作爲參數傳入
要求判斷成績的有效性(0-100),如果成績無效,則忽略此成績.
*/
public class Homework01 {
    //主函數
    public static void main(String[] args) {
        int [] scores = new int [] {89,23,64,91,119,52,73,-23};
        findScores(scores);

    }
    //尋找成績的函數
    public static void findScores(int [] scores) {
        int temp=0;
        //給成績按從大到小排序
        for(int i=0; i<scores.length; i++) {
            for(int j=i; j<scores.length-1; j++){
                if(scores[i]<scores[j+1]) {
                    temp = scores[i];
                    scores[i] = scores[j+1];
                    scores[j+1]=temp;
                }
            }
        }
        //前三名就是 下標位 0 1 2的 數
        int First = scores[0];
        int Second = scores[1];
        int Third = scores[2];
        //輸出
        if(First<=100 && First>=0) {
            System.out.println("第一名的分數是"+First);
        }else {
            System.out.println("第一名的分數不符合要求");
        }
        if(Second<=100 && Second>=0) {
            System.out.println("第二名的分數是"+Second);
        }else {
            System.out.println("第二名的分數不符合要求");
        }
        if(Third<=100 && Third>=0) {
            System.out.println("第三名的分數是"+Third);
        }else {
            System.out.println("第三名的分數不符合要求");
        }
    }
}

這裏寫圖片描述

package org.westos_Homework02;
/*2. 用數組來實現, 定義並初始化一個(1--100)保存100個數的數組,從第一個元素開始,依次數(1,2,3 循環往復),
 * 每次數到到3的元素淘汰掉.當到達數組
    末尾的時候再從頭開始,直到最後剩餘一個元素,
    寫出算法,並輸出最後保留的元素所在的最初的位置.*/
public class Homework02 {
    static final int ALL_NUMBERS = 100; // 定義數組的總數
    static final int ERE_NUMBERS= 3;   // 循環到幾
    public static void main(String[] args) {
        myAri(1);
    }
    public static void myAri(int site) {    //該題的算法
        int cir = -1;   //總循環
        int count = -1;   // 被淘汰的數的次序
        int [] arr = new int [ALL_NUMBERS];  // 定義並初始化一個(1--100)保存100個數的數組
        for(int i=0; i<arr.length; i++) {
            arr[i]=i+1;
        }
        int j =0;
        while(-count<=ALL_NUMBERS) {       
            do {
                cir = (cir+1) % ALL_NUMBERS; 
                if(arr[cir]>=0) {     //開始數數
                    j++;
                }if(j==3){  //數到3重置
                    j=0;
                    break; //跳出循環
                }
            }while(true);
            arr[cir]=count;  //給被選中的數組的值賦值   第一個被選出來的賦值-1 第二是 -2 依次循環 最後一個出來的是-100
            count--;
        }
        site=-count-site;   // 從第一個數開始數 所以減去 site
        for(int i=0; i<arr.length; i++) {
            if(-site==arr[i]) {
                System.out.println("最後保留的元素的最初位置是"+(i+1)); // 找出-100所對應的數組的下標
                break;
            }
        }
    }
} 

這裏寫圖片描述

package org.westos_Homewor03;
//用數組來實現對於一個整形數組, 分別通過冒泡排序和 快速排序,實現對於任意一個數組進行由小到大的排列。
public class Homework03{
    public static void main(String[] args) {
        int [] arr = new int[] {49,8,26,44,69,54,88,76,34};

        bubSort(arr);   //冒泡排序
        quickSort(arr); //快速排序
    }
    public static void bubSort(int [] arr){           //冒泡排序
        for(int i=0; i<arr.length; i++){                
            int flag=0;                               //定義一個標記
            for(int j=arr.length-1; j>i; j--) {       //從末尾開始數 
                if(arr[j]<arr[j-1]) {                 //如果後面的數小於前面的數就調換位置 
                    int temp=arr[j];          
                    arr[j]=arr[j-1];
                    arr[j-1]=temp; 
                    flag=1;                           //調換成功之後讓標記flag=1
                }
            }
            if(flag==0) {                             //當內存循環完畢之後   =>  j<=i之後跳出循環
                break;
            }
        }
        System.out.println("冒泡排序:");                //輸出排序的結果
        for(int i=0; i<arr.length; i++){
            System.out.print(arr[i]+" ");
        }
    }
    public static int partSort(int [] arr,int low, int high) {   //快速排序
        int key=arr[low];                                        //定義一個基數  該基數爲數組的第一個數 
        while(high>low) {                                        //當low<high時執行循環
            while(arr[high]>=key && high>low) {                  //如果high大於等於基數     讓high--
                high--;
            }
            int temp=arr[low];                                   //直到high<基數   調換low和high中元素的位置                      
            arr[low]=arr[high];
            arr[high]=temp;
            while(arr[low]<=key && high>low) {                   //如果low小於等於基數       low++           
                low++;
            }
            int temp2=arr[low];                                  //直到low>基數時  調換low和high的位置
            arr[low]=arr[high];
            arr[high]=temp2;
        }
        arr[high]=key;                                           //把基數的值賦值給high    返回一個high
        return high;
    }
    public static int[] sort(int [] arr,int low,int high) {      
          if(low>=high){
                return arr;
            }
            int index=partSort(arr,low,high);                    //定義一個下標賦值爲high
            sort(arr,low,index-1);                               // 運用遞歸的方法把前後分成的小數組繼續按照上面的方法排序
            sort(arr,index+1,high);                              //直到high與low重合   然後返回數組的首地址
            return arr;
    }
    public static void quickSort(int [] arr) {                   //寫一個打印這個數組的函數
        int low=0;
        int high= arr.length-1;
        int [] arr1=sort(arr,low,high);
        System.out.println();
        System.out.println("快速排序:");
        for(int i=0; i<arr1.length; i++){
            System.out.print(arr1[i]+" ");
        }
    }
}

這裏寫圖片描述

package org.westos_Homework04;
//判斷101-200之間有多少個素數,並輸出所有素數。
public class Homework04 {
    public static void main(String[] args) {
            //判斷是否是質數的函數
            ifPrime();
    }     //判斷是否是質數的函數
    public static void ifPrime() {
        //定義一個100個數的數組  初始化他們的變量爲 101-200
            int [] arr= new int[100];
            int temp=0;
            int index=0;
            for(int i=0; i<arr.length; i++){
                arr[i]= 101+i;
            }
            //尋找出非質數的數  
            for(int i=0; i<arr.length; i++){
                for(int j=2; j<arr[i]; j++) {
                    temp=arr[i]%j;
                    if(temp==0 && arr[i]!=0 ) {
                        // 讓非質數的數的值爲0
                        arr[i]=0;
                        break;
                    }
                }
            }
            //找出這個數組中非0的數 這些數爲質數 
            for(int i=0; i<arr.length; i++) {
                if(arr[i]!=0) {
                    index++;
                    System.out.print(arr[i]+" ");
                }
            }
            // 一共有多少個質數
            System.out.println();
            System.out.println("101-200之間的素數有"+index+"個");
    }   
}

這裏寫圖片描述

package org.westos_Homework05;
import  java.util.Scanner;  
//輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
public class Homework05 {
    public static void main(String[] args) {
        stri();      
    }  
    public static void stri() {
        int num=0,chartra=0,blak=0,other=0;  
        Scanner  s=new Scanner(System.in);  
        System.out.println("請輸入字符串");
        //定義一個字符串類型的reslut  從鍵盤錄入字符串
        String  result=s.nextLine();  
        //定義一個字符串數組來儲存 鍵盤錄入的串
        char x[]=result.toCharArray(); 
        //遍歷數組
        for(int i=0;i<x.length;i++){  
           if(Character.isDigit(x[i])){  
               num++;  
           }else if(Character.isLetter(x[i])){  
               chartra++;  
           }else if(Character.isSpace(x[i])){  
               blak++;  
           }  
           else{  
               other++;  
           }  
        }  
        //輸出結果
        System.out.println("數字的個數是"+num);  
        System.out.println("字符的個數是"+chartra);  
        System.out.println("空值的個數是"+blak);  
        System.out.println("其他的個數是"+other); 
    }
}  

這裏寫圖片描述

package org.westos_Homework06;
/*6.題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,
高於10萬元的部分,可可提成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,
高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤,求應發放獎金總數?
*/
import java.util.Scanner;
public class Homework06 {
    public static void main(String[] args) {
        calculateBonus();
    }
    //這感覺沒啥要註釋的....
    public static void calculateBonus() {
        Scanner sr = new Scanner(System.in);
        System.err.println("請輸入當月的利潤");
        int profit = sr.nextInt();
        double bonus=0;
        if(profit<=100000) {
            bonus=profit*0.1;
        }else if(profit>100000 && profit<=200000) {
            bonus=(profit-100000)*0.075+100000*0.1;
        }else if(profit>200000 && profit<=400000) {
            bonus=(profit-200000)*0.05+100000*0.075+100000*0.1;
        }else if(profit>400000 && profit<=600000) {
            bonus=(profit-400000)*0.03+200000*0.05+100000*0.075+100000*0.1;
        }else if(profit>600000 && profit<=1000000) {
            bonus=(profit-600000)*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1;
        }else if(profit>1000000) {
            bonus=(profit-1000000)*0.01+400000*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1;
        }//限制一下用戶輸入
            else if(profit<=0) {
                System.out.println("虧成一個大xx啊");
            }
        System.err.println("應當發放的獎金總數爲"+bonus);
    }
}

這裏寫圖片描述

package org.westos_Homework07;
/*
 * 分別定義用戶類,訂單類,產品類,其中訂單類至少要具有下訂單的行爲(入參爲一個產品名稱),
產品類中至少有一個成員變量爲產品名稱,至少有一個方法用來獲取產品的名稱。
用戶類中持有一個產品類型的成員變量。
用戶類中持有一個訂單類型的成員變量。

在我們的用戶類中定義main函數,當執行的時候,構造一個用戶類的對象,
並且通過手段可以拿到產品成員變量中的產品名稱,並且調用成員變量訂單的對象,進行下單。
最後輸出下單成功。
*/
//導包
import java.util.Scanner;
public class User extends Product{
    //定義一個產品類型和訂單類型
     int productType=0;
     int orderType=0;
     Scanner sr = new Scanner(System.in);
    public static void main(String[] args) {
        //定義一個用於循環的 i
        int i =-1;
        // 構造一個用戶類
        User uu = new User();
        while(i==-1) {
            //輸入產品類型
            uu.getProductType();
            uu.productType= uu.sr.nextInt();
            //判斷產品爲什麼類型
            if(uu.productType==1) {
                System.out.println("您確定購買"+uu.getFruitName()+"嗎");
            }else if(uu.productType==2) {
                System.out.println("您確定購買"+uu.getSnacksName()+"嗎");
            }
            //判斷是否繼續購買
            System.out.println("輸入1確認購買,輸入其他數字返回主菜單");
            int affirm = uu.sr.nextInt();
            if(affirm==1) {
                uu.getorderType();
                uu.orderType=uu.sr.nextInt();
                System.out.println(uu.orders(uu.orderType));
                //如果繼續購買就讓i=0; 結束次循環  並且輸出訂單成功
                i=0;
            }
        }   
    }
}
class Order{
    // 訂單類
    //判斷是否訂單成功的函數
    public String orders(int ifSucc) {
        String condition = "沒有下單";
        if(ifSucc==1 || ifSucc==2) {
            condition="下單成功";
            //return condition;
        }else{
            condition="下單失敗";
        }return condition;
    }
}
//產品類
class Product extends Order{
     Scanner sr = new Scanner(System.in);
     //產品封裝
     private String pr01="蘋果";
     private String pr02="香蕉";
     private String pr03="橘子";
     private String pr04="餅乾";
     private String pr05="可樂";
     private String pr06="薯片";
     //得到產品類型的函數
    public void getProductType() {
        System.out.println("輸入您想購買的類型");
        System.out.println("1:水果類");
        System.out.println("2:零食類");
    }
    //得到支付類型的函數
    public void getorderType() {
        System.out.println("請輸入支付方式");
        System.out.println("1:自己支付");
        System.out.println("2:朋友支付");
    }
    //得到商品名字
    public String getFruitName() {
        String name;
        System.out.println("-------------------");
        System.out.println("請選擇你要購買的商品");
        System.out.println("1:"+pr01);
        System.out.println("2:"+pr02);
        System.out.println("3:"+pr03);
        int result = sr.nextInt();
        switch(result) {
            case 1:
                name =pr01;
                break;
            case 2:
                name =pr02;
                break;
            case 3:
                name =pr03;
                break;
            default :
                name="沒有此商品";
                break;
        }
        return name;
}
    public String getSnacksName() {
        String name;
        System.out.println("-------------------");
        System.out.println("請選擇你要購買的商品");
        System.out.println("1:"+pr04);
        System.out.println("2:"+pr05);
        System.out.println("3:"+pr06);
        int result = sr.nextInt();
        switch(result) {
            case 1:
                name =pr04;
                break;
            case 2:
                name =pr05;
                break;
            case 3:
                name =pr06;
                break;
            default :
                name="沒有此商品";
                break;
        }
        return name;
    }
}

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章