蓝桥杯训练day2_10

这篇博客主要介绍了Java编程中的一些基础知识,包括如何保留小数点后两位、忽略大小写的字符串比较、统计字符串中不同单词数量、数组排序以及寻找勾股数。此外,还详细讲解了如何根据百分制成绩进行等级统计,并给出了解决方案。通过对输入数据的处理和分析,实现了对各种常见问题的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写了九道简单题,总结一下知识点。

  • 输出保留两位小数

我在做题时最常用的有两种。

        double num = 3.14159;
        System.out.printf("%.2f",num);

        java.text.DecimalFormat  f = new java.text.DecimalFormat("0.00");  

        System.out.println(f.format(num));

  • 不考虑单词大小写比较内容是否相同

        String str1 = "hello";
        String str2 = "HELLo";
        System.out.println(str1.compareToIgnoreCase(str2)); // 0,0代表字符串内容相同

  • 统计字符串中不同单词个数

将字符串分割成字符串数组。

两个 for 循环,外层循环从第一个单词遍历到最后一个,内层用来判断外层的单词是否与其他单词相同。如果不同,则计数。那相同的会不会没有被记一次呢?答案是被记了,因为重复的单词最后一次出现时,后面已经没有与之重复的了,此时count+1

        int count = 0;
        for(int i=0;i<arr.length;i++) {
            boolean flag = true;
            for(int j =i+1;j<arr.length;j++) {
                if(arr[i].equalsIgnoreCase(arr[j])) {
                    flag = false;
                    break;
                }
            }
            if(flag)count++;
            flag = true;
        }

  • 对数组排序

        Arrays.sort(arr); 

  • a<b<c 且 a+b+c<=1000的勾股数。

对于三条边之和小于1000的勾股数,a<333 , b<500 , c<1000。 

  • 分数统计

题目描述:

给定一个百分制成绩T,将其划分为如下五个等级之一:
90~100为A,80~89为B,70~79为C,60~69为D,0~59为E
现有若干百分制成绩(成绩个数不超过1000个),请你统计五个等级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩(保证人数最多的等级只有一个)。 

输入:

第一行是成绩的个数 n
第二行是学生的成绩,若干0~100的正整数,用空格隔开 

输出:

第一行为5个正整数,分别表示A,B,C,D,E五个等级段的人数 
第二行一个正整数,表示人数最多的等级段中人数 
接下来一行若干个用空格隔开的正整数,表示人数最多的那个等级中所有人的分数,按从大到小的顺序输出。 

样例输入:

10
100 80 85 77 55 61 82 90 71 60

样例输出:

2 3 2 2 1
3
85 82 80

思路分析: 将输入的数字存放进数组,对数组排序,利用 for 循环遍历数组中的分数并用if 语句判断分数的范围统计每个等级出现的次数,找出次数最大的等级,利用循环输出。

package day2_10;

import java.util.Arrays;
import java.util.Scanner;

public class Main1500true {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] arr = new int[n];
		for(int i=0;i<n;i++) {
			arr[i] = sc.nextInt();
		}
		int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;
		Arrays.sort(arr);
		for(int j=0;j<n;j++) {
			if(arr[j]<60) {
				sum1++;
			}else if(arr[j]>=60&&arr[j]<70) {
				sum2++;
			}else if(arr[j]>=70&&arr[j]<80) {
				sum3++;
			}else if(arr[j]>=80&&arr[j]<90) {
				sum4++;
			}else sum5++;
		}
		int p=Math.max(sum5, Math.max(sum4, Math.max(sum3, Math.max(sum1, sum2))));
		System.out.println(sum5+" "+sum4+" "+sum3+" "+sum2+" "+sum1);
		System.out.println(p);
		for(int i=p;i>0;i--) {
			if(p==sum1) {
				System.out.print(arr[i-1]+" ");
			}else if(p==sum2) {
				System.out.print(arr[i+sum1-1]+" ");
			}else if(p==sum3) {
				System.out.print(arr[i+sum1+sum2-1]+" ");
			}else if(p==sum4) {
				System.out.print(arr[i+sum1+sum2+sum3-1]+" ");
			}else {
				System.out.print(arr[i+sum1+sum2+sum3+sum4-1]+" ");
			}
		}
		System.out.println();
		
		
		

	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值