本文旨在记录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。如是,我们便实现了四舍五入并保留一位小数。

8752

被折叠的 条评论
为什么被折叠?



