/*
1.考试成绩已经保存在数组scores中,依次为 89,23,64,91,119,52,73,-23
要求根据通过自定义方法来找出其中前三名,将数组成绩作为参数传入
要求判断成绩的有效性(0-100),如果成绩无效,则忽略此成绩.
*/
public class TestScore {
int [] scores ;
public static void main(String[] args) {
TestScore t1 = new TestScore();
t1.sortScore( new int []{89,23,64,91,119,52,73,-23} );
}
//用选择排序对成绩进行从小到大排序
void sortScore(int[] marks){
int temp = 0;
for(int i=0;i<marks.length-1;i++){
for(int j=i+1;j<marks.length-1;j++){
if(marks[i]>=0&&marks[i]<=100&&marks[i]<marks[j]){
temp = marks[i];
marks[i] = marks[j];
marks[j] = temp;
}else{
continue;
}
}
}
System.out.print("前三名的成绩是:");
for(int i=0;i<3;i++){
System.out.print(marks[i] + " ");
}
}
}
/*
2.用数组来实现, 定义并初始化一个(1--100)保存100个数的数组,从第一个元素开始,依次数(1,2,3 循环往复),每次数到到3的元素淘汰掉.当到达数组
末尾的时候再从头开始,直到最后剩余一个元素,写出算法,并输出最后保留的元素所在的最初的位置.
*/
public class Count3Quit {
public static void main(String[] args) {
boolean[] arr = new boolean[100];
for(int i=0;i<arr.length;i++){
arr[i] = true; //第i个人存在即为true
}
int leftCount = arr.length; //圈内的人数
int countNumber = 0; //计数器3
int index = 0; //位置
while(leftCount > 1){ //循环条件圈内人数大于1
if(arr[index] == true){
countNumber ++; //开始计数
if(countNumber == 3){
countNumber = 0; //计数清零
arr[index] = false; //淘汰数到三的人
leftCount --;
}
}
index ++;
if(index == arr.length){
index = 0;
}
}
for(int i=0;i<arr.length;i++){
if(arr[i] == true){
System.out.println(i);
}
}
}
}
/*
3.用数组来实现对于一个整形数组, 分别通过冒泡排序和 快速排序,实现对于任意一个数组进行由小到大的排列。
*/
public class IntSort {
public static void main(String[] args){
int [] arr = new int [] {2,56,4,7,3,0,1,8};
bubblesort(arr);
quickSort(arr, 0, arr.length - 1);
}
/*
冒泡排序bubble sort(从小到大) :原理是临近的数字两两进行比价,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后从头开始进行比较交换,直到倒数第二位时结束,依次类推。
* */
public static void bubblesort(int[] arr){
int temp = 0;
for(int i = 0;i<arr.length-1;i++){ //冒泡趟数
for(int j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i= 0;i<arr.length;i++){
System.out.print("冒泡排序后的顺序: " + arr[i] + " ");
}
}
/*
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,
然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
* */
public static void quickSort(int arr[],int _left,int _right){
int left = _left;
int right = _right;
int temp = 0;
if(left <= right){
temp = arr[left];
while(left != right){
while(right > left && arr[right] >= temp)
right --;
arr[left] = arr[right];
while(left < right && arr[left] <= temp)
left ++;
arr[right] = arr[left];
}
arr[right] = temp; //基准元素归位
quickSort(arr,_left,left-1); //对基准元素左边的元素进行递归排序
quickSort(arr, right+1,_right); //对基准元素右边的进行递归排序
}
for(int i= 0;i<arr.length;i++){
System.out.print("快速排序后的顺序: " + arr[i] + " ");
}
}
}
/*
4.判断101-200之间有多少个素数,并输出所有素数。
*/
public class TestPrimeNumber {
public static void main(String[] args) {
int count = 0;
int minNum = 101;
int maxNum = 200;
while(minNum<=maxNum){
if((minNum%2)!=0){
System.out.println(minNum);
count++;
}
minNum++;
}
System.out.println();
System.out.println(count);
}
}
/*
5.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
**/
import java.util.Scanner;
public class TestString {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.println("请输入一行字符: ");
String str = scan.nextLine();
test(str);
}
public static void test(String str){
int letter = 0;
int blank=0;
int number=0;
int other=0;
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
if(ch>'A'&&ch<'Z'||ch>'a'&&ch<'z'){
letter++;
}else if(ch==' '){
blank++;
}else if(ch>='0'&&ch<='9'){
number++;
}else{
other++;
}
}
System.out.println("英文字母个数:"+letter);
System.out.println("空格个数:"+blank);
System.out.println("数字个数:"+number);
System.out.println("其他字符个数:"+other);
}
}
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 TestWage {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入当月利润: ");
double profit = input.nextDouble();
double bonus = 0;
if(profit<=100000){
bonus = profit * 0.1;
}
if(profit>100000 && profit<=200000){
bonus = (profit - 100000) *0.075 + bonus;
}
if(profit>200000 && profit<=400000){
bonus = (profit - 200000) * 0.05 + bonus;
}
if(profit>400000 && profit<=600000){
bonus = (profit - 400000) * 0.03 + bonus;
}
if(profit>600000 && profit<=1000000){
bonus = (profit - 600000) * 0.015 + bonus;
}
if(profit>=1000000){
bonus = (profit - 1000000) * 0.001 + bonus;
}
System.out.print("当月奖金是: "+bonus+"RMB");
}
}
import java.util.Scanner;
/*
7.分别定义用户类,订单类,产品类,其中订单类至少要具有下订单的行为(入参为一个产品名称),
产品类中至少有一个成员变量为产品名称,至少有一个方法用来获取产品的名称。
用户类中持有一个产品类型的成员变量。
用户类中持有一个订单类型的成员变量。
在我们的用户类中定义main函数,当执行的时候,构造一个用户类的对象,
并且通过手段可以拿到产品成员变量中的产品名称,并且调用成员变量订单的对象,进行下单。
最后输出下单成功。
*/
public class User {
Product product = new Product();
Order order = new Order();
public static void main(String[] args) {
User member = new User();
member.product.getName();
member.order.getOrder();
}
class Order{
String orderName;
void getOrder(/*String productName*/){
System.out.println("下单成功!");
}
}
class Product{
String productName;
public String getName(){
Scanner sc = new Scanner(System.in);
System.out.println("请输入产品名称: ");
productName = sc.nextLine();
return productName;
}
}
}