花了一周的时间将“变量、数据类型和运算符”、“选择结构”、“循环结构”、“循环嵌套”学习过了。今天进入数组的学习,内容不多,重在练习。
以下是今天所做的4个练习:
package videoCourseOfJava;
import java.util.Scanner;
/**
* @author 一条子非鱼的沫
* @date: 2017/12/15
* @see 从控制台输入一个数组并对此数组进行运算
*/
public class 数组01 {
// private static int[] score;
public static void main(String[] args) {
int[] score = new int[5];//声明一个数组并为数组分配内存空间
Scanner sc = new Scanner(System.in);// 使用Scanner方法从控制台获取信息(此处是用于获取数组的数据信息)
for (int i = 0; i < score.length; i++) {// score.length表示分数类数组的长度,也可以输入一个具体的数值
System.out.print("请输入第" + (i + 1) + "个同学的分数:");
score[i] = sc.nextInt();// 从控制台获取一个数长度为7的数组
}
int sum = 0;// 定义总分数的初始值为0
for (int i = 0; i < score.length; i++) {//使用for循环结构计算求出从控制台输入的score的总和
sum = sum + score[i];// 改变总分数的初始值,并且累计求和
}
double avg = sum / 5.0;// 声明并赋值求出平均数
System.out.println("所输入分数总和为:" + sum);
System.out.println("所输入分数平均分为:" + avg);
sc.close();// 关闭输入的流,释放内存
}
}
package videoCourseOfJava;
import java.util.Scanner;
/**
* @author 一条子非鱼的沫
* @see 数组求和与数组中数据的验证
*/
public class 数组02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);// 调用Scanner方法
int[] nums = { 84, 75, 39, 68, 28, 96, 76 };// 声明数组并集体赋值
int sum = 0;// 定义一个整型的初始值,用于整数求和
System.out.print("数组为:");
for (int i = 0; i < nums.length; i++) {// nums.length表示nums数组的长度
System.out.print(nums[i] + " ");
sum += nums[i];// 累计相加,求出nums数组中所有数值的总和sum
}
System.out.println("数组的数据总和为:" + sum);
System.out.print("请输入要查找的数:");
int n = sc.nextInt();// 从控制台获取一个整型的数据
for (int i = 0; i < nums.length; i++) {
if (n == nums[i]) {// 依次验证数据n是否与既定数组中的某个数值相等,如果有,则执行if结构内的语句
System.out.print("你所查找的数在这个数组中第" + (i + 1) + "个数字出现");
}
}
sc.close();// 关闭输入的流,并释放内存
}
}
package videoCourseOfJava;
import java.util.Arrays;//数组进行排序所引用的包
import java.util.Scanner;
/**
* @author 一条子非鱼的沫
* @see 控制台输入数组并自动进行升序排列
*/
public class 数组03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] score = new int[5];
System.out.println("请输入5个成绩:");
for (int i = 0; i < score.length; i++) {
score[i] = sc.nextInt();
}
Arrays.sort(score);// 数组排序命令,用于将数组中的数据由小到大进行排序
System.out.print("排序后的数组元素为:");
for (int i : score) {// foreach主要用于遍历数组或集合,表示把score中的值依次赋给i
System.out.print(i + " ");
}
sc.close();// 关闭输入的流,并释放内存
}
}
package videoCourseOfJava;
import java.util.Scanner;
/**
* @author 一条子非鱼的沫
* @date 2017/12/15
* @see 插入算法:对一个既定数组添加新的元素,可运用于处理补录学生成绩等问题
*/
public class 数组04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
// int[] list=new int[]{99,85,82,63,60};//在进行插入算法时,不宜集体进行数据声明
int[] list = new int[6];// 声明数组并分配空间
list[0] = 99;
list[1] = 85;
list[2] = 82;
list[3] = 63;
list[4] = 60;// 对其中的5个数据进行赋值
System.out.println("插入前的数组元素为:");
for (int val : list) {// 把list中的值依次赋给val
System.out.println(val);// 输出的数组中,list[5]的数值默认为0
}
System.out.println("请输入要插入的值:");
int num = sc.nextInt();// 从控制台输入一个需要插入的数值
// 声明变量记录要插入的位置
int index = -1;// index表示插入数的下标
for (int i = 0; i < list.length; i++) {
if (num > list[i]) {// 在数组中,按下标顺序依次排除比num大的数,找到第一个比插入值小的数并将这个数的下标赋给index
index = i;// 要找的位置
break;
}
}
for (int j = list.length - 1; j > index; j--) {
// 从排列最后的数开始,即从list.length-1开始依次将前一个数赋值给后一个数,直到index位置(不包括)
// 其达到的效果即为:将被赋值的index之后的数组整体向后移动一个位置
list[j] = list[j - 1];// 将下标数值比index大的下标所对应的数值数整体向后移动,即给index让出位置
}
// 把要插入的值放在索引index的位置
list[index] = num;// 将所插入的数值赋给插入的位置(index)
System.out.println("插入后的数组元素为:");
for (int val : list) {// 把list中的值再依次赋给val
System.out.println(val);// 输出新排序的数组
}
sc.close();// 关闭输入的流,并释放内存
}
}
【一点闲话】从英语跨向java编程,思维方面一时之间有些转换不过来,很多数学逻辑上的算法,其实并不是太难理解,但仍旧反复看了几遍之后才理解到。高中的时候是文科,但当时的数学思维其实也还不错,但大学之后就一点数学都没有接触过了。现在,其实略微有些庆幸,因为现在我的生活中,不只有文学这种感性的东西,还有一点理性的约束。
接下来将进入“类和对象”,这一章节之前看过,但感觉似乎很难,希望能够平安度过。