WEEK 2练习

来源:互联网 发布:ar9341编程器固件 编辑:程序博客网 时间:2024/05/16 15:23

 

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;

    }

}

结果