Java笔记:数据输入,数组的冒泡排序,选择排序,大小写字母的转换,四舍五入并保留某位小数,某数的幂运算

本文旨在记录Java代码初学者的学习历程并表达本人对代码的理解。
本文的内容包括:数据输入,数组的冒泡排序,选择排序,大小写字母的转换,四舍五入并保留某位小数,某数的幂运算。
本文涉及到的题目有:
https://www.luogu.com.cn/problem/P5708
https://www.luogu.com.cn/problem/P5704

1.数据输入,数组数据的冒泡排序

数据的输入需要用到标准库中的类Scanner。输入不同的数据类型要用不同的方法。

import java.util.Scanner;
Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();//输入整型数据
        double a=sc.nextDouble();//输入浮点型数据
        char a=sc.next().charAt(0);//输入字符(串),提取出第一个字符

冒泡排序,可以理解为让数据像泡泡浮出水面一样移动。在代码层面,它表现为数据的多次位置交换。这里,我们要将数组中的整型数据从小到大排序。

import java.util.Scanner;
public class oop0818 {
    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-1;i++){
            arr[i]=sc.nextInt();
        }//循环输入数据
        for(int j=0;j<n-1;j++) {
            for (int i = 0; i < n - 1; i++) {
                if (arr[i] > arr[i + 1]) {
                    int a = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = a;//内循环一次,会将最大的数移至最后,需要多次进行,因此加外循环
                }
            }
        }
        for(int q=0;q<n;q++){
            System.out.print(arr[q]+" ");
        }
    }
}

2.选择排序

选择排序,本质上是从未排序的区域里挑出最小的,再依次把它放到已排序区内。在代码层面上,它表现为从头到尾对同一元素与后续元素的大小比较,随后交换它们。

import java.util.Scanner;
public class chooseOrder {
    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 minlocation=0;
        for (int i = 0; i < n; i++) {
            minlocation=i;//记录第一个元素的索引
            for (int j = i+1; j < n; j++) {
                if (arr[minlocation] > arr[j]) {
                    minlocation = j;//如果后面有较大的元素,就将其索引记录下来
                }
            }
            int b=0;
            b=arr[i];
            arr[i]=arr[minlocation];
            arr[minlocation]=b;//以交换的方法把最小的那个元素换到前面的位置
        }

        for (int i=0;i<n; i++) {
            System.out.print(arr[i]+" ");
        }
    }
}

3.大小写字母的转换

题目见网址:https://www.luogu.com.cn/problem/P5704
我们需要知道,在Java中,每个字符都有其对应的Unicode编号,这里的编号类型有很多种,这里不再提及。我们要实现字母的大小写转换,就需要找到它们的Unicode编码。

import java.util.Scanner;
 Scanner sc = new Scanner(System.in);
 char a=sc.next().charAt(0);
 int b=(int) a;//将字符类型数据强制转换为整型,就可得到它的Unicode编码。

在对多个大小写字母测试后,我发现同一个字母的大小写,它们的编码相差32。由这个规律得到小写变大写的方法。

import java.util.Scanner;
public class  Main {
   public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       char a=sc.next().charAt(0);
       int c=(int)a-32;
       char b=(char)c;
       System.out.println(b);

输入q后可输出Q。

4.保留一位小数并四舍五入的三角形面积,幂运算

题目见网址:https://www.luogu.com.cn/problem/P5708
三角形面积S=​根号下[p*(p-a)(p-b)(p-c)],其中p=(a+b+c)/2
先说明幂运算,需要用到Math.pow(数值,指数),需注意,指数若是分数,应写为1.0/2.0的形式。因为Java中整型间的运算,其结果只能是整型,因此1/3本应是0.333,但会被Java认为成0(不自动四舍五入,仅保留整数部分)。并且Math.pow的返回值一定是浮点型。
再说明四舍五入并保留小数,需要用到Math.round(数值)。Math.round()的本质是把一个浮点数(小数),四舍五入成离它最近的整数(返回整数类型)。例如3.14会变为3。要保留一位小数,我们需要先给本来的数值10,在经过Math.round()后再/10。例如3.14先10变为31.4,经过Math.round()后变为31,再/10变为3.1。如是,我们便实现了四舍五入并保留一位小数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值