10.1作业

本文通过多个Java编程实例,展示了数组操作、排序算法、素数判断、奖金计算等实用技巧,涉及冒泡排序、快速排序等算法及面向对象设计。
package Test;
/*1.考试成绩已经保存在数组scores中,依次为 89,23,64,91,119,52,73,-23

要求根据通过自定义方法来找出其中前三名,将数组成绩作为参数传入
要求判断成绩的有效性(0-100),如果成绩无效,则忽略此成绩.*/
public class Test1 {
	public static void main(String[] args) {
		int [] scores={89,23,64,91,119,52,73,-23};
		Test1 find=new Test1();
		find.FindScores(scores);
	}
	public void FindScores(int [] arr){
		//由大到小排列数组
		for(int i=0;i<arr.length;i++){
			for(int j=1;j<arr.length;j++){
				if(arr[i]>arr[j]){
					int temp=arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
		}
		int temp1=0;//计数器
		for(int i=0;i<arr.length;i++){
			if(arr[i]>=0 && arr[i]<=100 && temp1<3){
				temp1++;
				System.out.println(arr[i]);
			}else{
				i++;
			}
		}
	}
}
package Test;
/*2. 用数组来实现, 定义并初始化一个(1--100)保存100个数的数组,从第一个元素开始,依次数(1,2,3 循环往复),每次数到到3的元素淘汰掉.当到达数组
末尾的时候再从头开始,直到最后剩余一个元素,写出算法,并输出最后保留的元素所在的最初的位置.*/
public class Test2 {

		
		static int [] arr=new int[100];
		Test2(){
			for(int i=0;i<100;i++){
				arr[i]=i+1;
			}
			
		}
		public static void main(String[] args) {
			findArr(arr);
			
		}
		public static void findArr(int [] arr){
			int sum=0;//计数器
			int i=0;//下标
			int num=0;//记录循环次数
			int top=0;//记录被淘汰的位置
			while(sum!=100){
				if(arr[i]!=-1){
					//判断是否被淘汰
					if(num==2){
						sum++;//累加淘汰数
						arr[i]=-1;//淘汰当前数
						num=0;//循环从0开始
						top=i;
						System.out.println(top);
					}else{
						num++;
					}
				}
				i++;
				if(i==100){
					i=0;
				}
			}
			System.out.println("最终被淘汰元素的位置为:"+top);
		}

	
}
package Test;
/*3. 用数组来实现对于一个整形数组, 分别通过冒泡排序和 快速排序,实现对于任意一个数组进行由小到大的排列*/
public class Test3 {
	public static void main(String[] args) {
		int [] arr={5,7,8,9,1,7,3};
		bubbleSort(arr);
		printArr(arr);
		System.out.println();
		quickSort(arr,0,arr.length);
		printArr(arr);
	}
	//输出
	public static void printArr(int []arr){
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]);
		}
	}
	//冒泡排序
	public static void bubbleSort(int []arr){
		int temp;
		for(int i=arr.length-1;i>0;--i){
			for(int j=0;j<i;++j){
				if(arr[j+1]<arr[j]){
					temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
	}
	//快速排序
	public static void quickSort(int []arr,int low,int high){
		int i,j,temp;
		i=low+1;
		j=high-1;
		if(high-low>1){
			while(i<=j){
				for(;i<high&&arr[i]<arr[low];i++);
				for(;j>low&&arr[j]>=arr[low];j--);
				if(i<j){
					temp=arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
			if(j>low){
				temp=arr[low];
				arr[low]=arr[j];
				arr[j]=temp;
			}
			if(j>low){
				quickSort(arr,low,j);
			}
			if(i<high){
				quickSort(arr,j+1,low);
			}
		}
		
	}
}
package Test;
/*4.判断101-200之间有多少个素数,并输出所有素数。*/
public class Test4 {
	public static void main(String[] args) {
		int i,n,k=0,sum=0;
		for(n=101;n<201;n++){
			i=2;
			while(i<n){
				if(n%i==0)
					break;//若能整除则不是素数
				i++;
			}
			if(i==n){//如果i==n则说明n不能被2~n-1整除,是素数
				k++;
				sum++;
				System.out.print(i+"\t");
				if(k%6==0)//每输出五个换行
					System.out.println();
			}
		}
		System.out.println();
		System.out.println("101~200之间的素数总共有"+sum);
	}

}
package Test;

import java.util.Scanner;

/*5.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。*/
public class Test5 {
	
	
	public static void main(String[] args) {
		int num=0,chartra=0,blak=0,other=0;
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入字符串:");
		String result=sc.next();
		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(x.length);
		System.out.println("数字个数是:"+num);
		System.out.println("字符个数是:"+chartra);
		System.out.println("空格个数是:"+blak);
		System.out.println("其他格式书:"+other);
	}
}
package Test;

import java.util.Scanner;

/*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%提成,
 * 从键盘输入当月利润,求应发放奖金总数?*/
public class Test6 {
	public static void main(String[] args) {
		double push=0;
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入利润:");
		double profit=sc.nextDouble();
		if(profit>0){
			if(profit<=100000){
				push=profit*0.1;
			}else if(profit>100000 && profit<=200000){
				push=(profit-100000)*0.075+10000;
			}else if(profit>200000 && profit<=400000){
				push=(profit-200000)*0.05+10000+75000;
			}else if(profit>400000 && profit<=600000){
				push=(profit-400000)*0.03+10000+75000+10000;
			}else if(profit>600000 && profit<=1000000){
				push=(profit-600000)*0.015+10000+75000+10000+6000;
			}else{
				push=(profit-1000000)*0.01+10000+75000+10000+6000+6000;
			}
		}
		System.out.println("应发奖金总数为:"+push);
	}
}
package Test;

import java.util.Scanner;

/*7.分别定义用户类,订单类,产品类,其中订单类至少要具有下订单的行为(入参为一个产品名称),
产品类中至少有一个成员变量为产品名称,至少有一个方法用来获取产品的名称。
用户类中持有一个产品类型的成员变量。
用户类中持有一个订单类型的成员变量。

在我们的用户类中定义main函数,当执行的时候,构造一个用户类的对象,
并且通过手段可以拿到产品成员变量中的产品名称,并且调用成员变量订单的对象,进行下单。
最后输出下单成功。*/
public class User {
	Product product=new Product();
	Oder oder=new Oder();

	public static void main(String[] args) {
		User user=new User();
		user.product.getInputName();
		user.oder.getOder();
	}
}
class Product{
	String productName;
	public String getInputName(){
		Scanner sc=new Scanner(System.in);
		System.out.println(" 输入商品名称:");
		productName=sc.next();
		return productName;
	}

}
class Oder{
	String oderName;
	void getOder(){
		System.out.println("下单成功");
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值