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("下单成功");
}
}