WEEK 2練習

 

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

 

  要求根據通過自定義方法來找出其中前三名,將數組成績作爲參數傳入

  要求判斷成績的有效性(0-100),如果成績無效,則忽略此成績.public class TEST {

public static void main(String[] args) {

int[] arr={89,-23,64,91,119,52,73};

arr(arr);

}

public static void arr(int[]arr){

for(int b=0;b<arr.length;b++){

//判斷成績是否在0-100

if(arr[b]>100||arr[b]<0){

arr[b]=0;

}

}

for(int i=0;i<arr.length-1;i++){

for(int a=i+1;a<arr.length;a++){

if(arr[i]<arr[a]){

int temp=arr[a];

arr[a]=arr[i];

arr[i]=temp;

}

//排序數組

}

 

}

    System.out.println("前三名是");

 

for(int j=0;j<3;j++){

System.out.print(arr[j]+",");

//輸出前三

}

 

System.out.println();

 

}

}

結果:

 

2. 用數組來實現,定義並初始化一個(1--100)保存100個數的數組,從第一個元素開始,依次數(1,2,3循環往復),每次數到到3的元素淘汰掉.當到達數組末尾的時候再從頭開始,直到最後剩餘一個元素,寫出算法,並輸出最後保留的元素所在的最初的位置.

public class TEST1 {

public static void main(String[] args) {

int distence = 0;

int[] arr = new int[100];

for (int i = 0; i < arr.length; i++) {

arr[i] = i + 1;

}

while (true) {//循環運行代碼,break跳出

int j = 0;

for (int i = 0; i < arr.length; i++) {

if (arr[i] != 0) {

j++;                //使用變量j記錄數組中不爲0的個數

}

}

if (j > 2) {

int z = distence;//將上一次末尾剩餘的數字加在新的數組的前面

for (int i = 0; i < arr.length; i++) {

if (arr[i] > 0) {

z++;  //使用變量z記錄不爲零的個數,

}

if (z == 3) {

arr[i] = 0;//z等於3時將該值改爲0

z = 0;      //重置不爲零的個數

}

}

distence = (j + distence) % 3;//distence表示每一次改變完後末尾餘的數據的個數

}else {

break;

}

}

 

if (distence == 2 || distence == 0) {

for (int i = arr.length - 1; i > 0; i--) {

if (arr[i] != 0) {

System.out.println(i);//distence2或者0時應該輸出後面的

break;

 

}

}

 

}else {

for (int i = 0; i < arr.length; i++) {

if (arr[i] != 0) { //distence1時應該輸出前面的

System.out.println(i);

break;

}

}

}

}

}

結果

 

 

 

3. 用數組來實現對於一個整形數組,分別通過冒泡排序和快速排序,實現對於任意一個數組進行由小到大的排列。

冒泡排序

public class TEST2 {

public static void main(String[]args){//創建一個亂序數組

int[]array={ 98,28,3,29,61,41,99};

TEST2 sorter=new TEST2();

//調用排序方法將數組排序

sorter.sort(array);

}

public void sort(int[]array){

for(int i=1;i<array.length;i++){

for(int j=0;j<array.length-i;j++){

//比較相鄰元素,較大數往後排

if(array[j]>array[j+1]){

int temp=array[j];

array[j]=array[j+1];

    array[j+1]=temp;

}

}

}

showArray(array);//輸出冒泡後的數組元素

}

public void showArray(int[]array){

for(int i:array){

System.out.print(">"+i);

}

System.out.println();

}}

 

 

直接選擇排序

public class TEST3{

public static void main(String[] args) {

//創建亂序數組

int[] array = { 98,28,3,29,61,41,99 };

TEST3 sorter =new TEST3();

//調用排序對象的方法將數組排序

sorter.sort(array);

}

public void sort(int[] array) {

int index;

for (int i = 1; i < array.length; i++) {

index = 0;

for (int j = 1; j <= array.length - i; j++) {

if (array[j] > array[index]) {

index = j;

}

}

//交換在位置array.length-iindex(最大值)兩個數

int temp = array[array.length - i];//把第一個元素值保持到臨時變量中

array[array.length - i] = array[index];//把第二個元素值保存到第一個元素單元中

array[index] = temp;//把臨時變量也就是第一個元素原值保持到第二個元素中

}

showArray(array);//輸出直接選擇排序後的數組值

}

public void showArray(int[] array) {

for (int i : array) {

System.out.print(" >" + i);

}

System.out.println();

}

}

 

 

4判斷101-200之間有多少個素數,並輸出所有素數。

public class TEST4 {

public static void main(String[]args){

int num=0;

for(int i=101;i<201;i++){

      for(int k=2;k<i;k++){

      int a= i % k;

      if(k==i-1){

      ++num;

      System.out.println("素數"+i);

      }else if(a==0){

      break;

      }

      

      }

}

System.out.println(num+"");

}

 

}

結果

 

5.題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數.          

        import  java.util.Scanner;  

public class TEST5 {  

    public static   void main(String args[]){  

        int num=0,space=0,letter=0,other=0;  

        Scanner  s=new Scanner(System.in);  

        System.out.println("請輸出字符串");  

        String   result=s.nextLine();  

        char arr[]=result.toCharArray();         

           for(int i=0;i<arr.length;i++){  

         if(Character.isDigit(arr[i])){  

               num++;  

           }else if(Character.isLetter(arr[i])){  

              space++;  

           }else if(Character.isSpace (arr[i])){  

               blank++;  

         }  

           else{                 other++;  

         }  

    System.out.println(arr.length);  

        }  

        System.out.println("數字的個數是"+num);  

       System.out.println("空格的個數是"+space);  

        System.out.println("字母的個數是"+blank);  

        System.out.println("其他的個數是"+other);  

   }  

}  

結果

 

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%提成,從鍵盤輸入當月利潤,求應發放獎金總數?

private final static long W = 100000;

public static double profit(double n){

 

      if( n <= 1*W ){  

           return n*0.1;  

       }else if( n>1*W && n<=2*W){  

           return (W*0.1 + (n-W)*0.75);

       }else if(n>2*W && n<=4*W){  

           return (W*0.1 + 1*W*0.75 + (n-2*W)*0.5);  

        }else if(n>4*W && n<=6*W){  

           return (W*0.1 + 1*W*0.75 + 2*W*0.5 + (n-4*W)*0.03);  

       }else if(n>6*W && n<=10*W){  

            return (W*0.1 + 1*W*0.75 + 2*W*0.5 + 2*W*0.03 + (n-6*W)*0.015);  

        }else if(n>10*W){  

            return (W*0.1 + 1*W*0.75 + 2*W*0.5 + 2*W*0.03 + 4*W*0.015 + (n-10*W)*0.01);  

        }else{  

           return -1;  

        }  

   

    }  

   public static void main(String[] args) {  

          

        System.out.println("請輸入本企業當月利潤:");  

        Scanner scanner =new Scanner(System.in);         

        System.out.println("應發獎金:" +profit(scanner.nextDouble()));  

         

   }  

結果

7.分別定義用戶類,訂單類,產品類,其中訂單類至少要具有下訂單的行爲(入參爲一個產品名稱)

  產品類中至少有一個成員變量爲產品名稱,至少有一個方法用來獲取產品的名稱。

  用戶類中持有一個產品類型的成員變量。

  用戶類中持有一個訂單類型的成員變量。

  

  在我們的用戶類中定義main函數,當執行的時候,構造一個用戶類的對象,

  並且通過手段可以拿到產品成員變量中的產品名稱,並且調用成員變量訂單的對象,進行下單。

  最後輸出下單成功。

import java.util.Scanner;

public class TEST7{

Stringproduct;

Stringbuy;

public static void main(String[] args) {

    TEST7 b=new TEST7();

    Product p=new Product();

    b.product=p.getName();

    buy o=new buy();

    o.placeAnOrder(b.product);

}

}

class buyextends TEST7{//訂單類繼承用戶類

    void placeAnOrder(String name){//下單

        System.out.println("你的商品"+name+"下單成功");

    }

}

class Product  extends TEST7{//產品類繼承用戶類

    Stringname="電競";

    String getName(){//輸入產品名稱

        Scanner n=new Scanner(System.in);

        System.out.println("請輸入商品名稱");

        name=n.next();

        return name;

    }

}

結果

 

發佈了37 篇原創文章 · 獲贊 0 · 訪問量 3676
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章