美文网首页Java小菜鸟
第六天 知识点练习与回顾【悟空教程】

第六天 知识点练习与回顾【悟空教程】

作者: Java帮帮 | 来源:发表于2018-05-18 17:14 被阅读227次

    第六天 知识点练习与回顾【悟空教程】

    06天 知识点练习与回顾

    第1章 练习

    1.1.1 看循环的执行流程

    1-5求和案例

    public class Demo02DebugTest {

    public static voidmain(String[] args) {

    // 定义求和变量

    int sum = 0;

    // 循环获取每一个数据

    for (int x= 1; x<= 5; x++) {

    sum+= x;

    }

    System.out.println("sum:"+ sum);

    }

    }

    1.1.2 看方法的调用流程

    求和方法的调用

    带有录入数据的如何看执行流程

    建议: 有方法调用的时候,要想看到完整的流程,每个方法都要加断点,建议方法进入的第一条有效语句加断点

    public class Demo03DebugTest {

    public static voidmain(String[] args) {

    // 创建对象

    Scanner sc= new Scanner(System.in);

    // 接收数据d

    System.out.println("请输入第一个数据:");

    int a= sc.nextInt();

    System.out.println("请输入第二个数据:");

    int b= sc.nextInt();

    // 调用方法

    int result= sum(a, b);

    // 输出结果

    System.out.println("result:"+ result);

    }

    // 求和方法

    public static int sum(int a, int b) {

    return a+ b;

    }

    }

    1.1.3 看方法参数传递案例执行流程

    参数是基本类型: 形式参数的改变不影响实际参数。

    public class Demo04DebugTest {

    public static voidmain(String[] args) {

    int a = 10;

    int b = 20;

    System.out.println("a:"+ a+ ",b:"+ b);

    change(a, b);

    System.out.println("a:"+ a+ ",b:"+ b);

    }

    public static void change(int a, int b) {

    System.out.println("a:"+ a+ ",b:"+ b);

    a= b;

    b= a+ b;

    System.out.println("a:"+ a+ ",b:"+ b);

    }

    }

    参数是引用类型: 形式参数的改变直接影响实际参数。

    public class Demo05DebugTest {

    public static voidmain(String[] args) {

    int[] arr = { 1, 2, 3, 4, 5 };

    for (int x= 0; x< arr.length; x++) {

    System.out.println(arr[x]);

    }

    System.out.println("-----------调用change------------");

    change(arr);

    for (int x= 0; x< arr.length; x++) {

    System.out.println(arr[x]);

    }

    }

    public static void change(int[] arr) {

    for (int x= 0; x< arr.length; x++) {

    if (arr[x] % 2 == 0) {

    arr[x] *= 2;

    }

    }

    }

    }

    第2章 强化训练

    2.1 键盘录入月份,输出对应的季节

    需求:

        一年有四季;3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季

    使用if语句实现

    public class Demo01Test {

    public static voidmain(String[] args) {

    // 键盘录入一个月份,用Scanner实现

    Scanner sc= new Scanner(System.in);

    // 接收数据

    System.out.println("请输入一个月份(1-12):");

    int month= sc.nextInt();

    // 判断该月份是几月,根据月份输出对应的季节

    /*

    if (month == 1) {

    System.out.println("冬季");

    } else if (month == 2) {

    System.out.println("冬季");

    } else if (month == 3) {

    System.out.println("春季");

    } else if (month == 4) {

    System.out.println("春季");

    } else if (month == 5) {

    System.out.println("春季");

    } else if (month == 6) {

    System.out.println("夏季");

    } else if (month == 7) {

    System.out.println("夏季");

    } else if (month == 8) {

    System.out.println("夏季");

    } else if (month == 9) {

    System.out.println("秋季");

    } else if (month == 10) {

    System.out.println("秋季");

    } else if (month == 11) {

    System.out.println("秋季");

    } else if (month == 12) {

    System.out.println("冬季");

    } else {

    System.out.println("你输入的月份有误");

    }

    */

    //代码太长了,能不能简单一些呢?

    //能,如何简单一些呢?

    //我们可以把相同季节的月份放到一起来判断

    //(month==3 || month==4 || month==5)

    if(month==1 || month==2 || month==12) {

    System.out.println("冬季");

    }else if(month==3 || month==4 || month==5) {

    System.out.println("春季");

    }else if(month==6 || month==7|| month==8) {

    System.out.println("夏季");

    }else if(month==9 || month==10 || month==11) {

    System.out.println("秋季");

    }else {

    System.out.println("你输入的月份有误");

    }

    }

    }

    使用switch语句实现

    普通switch方式代码实现

    public class Demo02Test {

    public static voidmain(String[] args) {

    // 键盘录入一个月份,用Scanner实现

    Scanner sc= new Scanner(System.in);

    // 接收数据

    System.out.println("请输入月份(1-12):");

    int month= sc.nextInt();

    // 用switch语句实现

    switch (month) {

    case 1:

    System.out.println("冬季");

    break;

    case 2:

    System.out.println("冬季");

    break;

    case 3:

    System.out.println("春季");

    break;

    case 4:

    System.out.println("春季");

    break;

    case 5:

    System.out.println("春季");

    break;

    case 6:

    System.out.println("夏季");

    break;

    case 7:

    System.out.println("夏季");

    break;

    case 8:

    System.out.println("夏季");

    break;

    case 9:

    System.out.println("秋季");

    break;

    case 10:

    System.out.println("秋季");

    break;

    case 11:

    System.out.println("秋季");

    break;

    case 12:

    System.out.println("冬季");

    break;

    default:

    System.out.println("你输入的月份有误");

    break;

    }

    }

    }

    case穿透原理

    public class Demo02Test{

    public static voidmain(String[] args) {

    // 键盘录入一个月份,用Scanner实现

    Scanner sc= new Scanner(System.in);

    // 接收数据

    System.out.println("请输入月份(1-12):");

    int month= sc.nextInt();

    //case 穿透

    switch(month) {

    case 1:

    System.out.println("hello");

    //break;

    case 2:

    System.out.println("world");

    break;

    default:

    System.out.println("over");

    break;

    }

    }

    }

    通过case穿透现象改进代码

    public class Demo02Test {

    public static voidmain(String[] args) {

    // 键盘录入一个月份,用Scanner实现

    Scanner sc= new Scanner(System.in);

    // 接收数据

    System.out.println("请输入月份(1-12):");

    int month= sc.nextInt();

    //通过case穿透现象改进代码

    switch(month) {

    case 1:

    case 2:

    case 12:

    System.out.println("冬季");

    break;

    case 3:

    case 4:

    case 5:

    System.out.println("春季");

    break;

    case 6:

    case 7:

    case 8:

    System.out.println("夏季");

    break;

    case 9:

    case 10:

    case 11:

    System.out.println("秋季");

    break;

    default:

    System.out.println("你输入的月份有误");

    break;

    }

    }

    }

    2.2 打印5位数中所有的回文数

    需求:

    什么是回文数呢?举例:12321是回文数,个位与万位相同,十位与千位相同。

    public class Demo03Test {

    public static voidmain(String[] args) {

    //5位数告诉了我们数据的范围,用for循环实现

    for(int x=10000; x<100000; x++) {

    //获取每一个5位数,然后得到它的个位,十位,千位,万位

    int ge= x%10;

    int shi= x/10%10;

    int qian= x/10/10/10%10;

    int wan= x/10/10/10/10%10;

    //把满足条件的数据输出即可

    if((ge==wan) && (shi==qian)) {

    System.out.println(x);

    }

    }

    }

    }

    2.3 不死神兔问题(斐波那契数列)

    需求:

    有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?

    public class Demo04Test {

    public static voidmain(String[] args) {

    //定义数组

    int[] arr= new int[20];

    //初始化第一个月和第二个月的兔子对数

    arr[0] = 1;

    arr[1] = 1;

    //从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和

    for(int x=2; x

    arr[x] = arr[x-2] + arr[x-1];

    }

    System.out.println("第二十个月的时候的兔子对数是:"+arr[19]);

    }

    }

    2.4 求数组中满足要求的元素和

    需求:

    (1)定义一个int类型的一维数组,内容为{171,72,19,16,118,51,210,7,18}

    (2)求出该数组中满足要求的元素和。

    (3)求和的元素的个位和十位不能包含7,并且只能为偶数。

    public class Demo05Test {

    public static voidmain(String[] args) {

    //定义一个int类型的一维数组

    int[] arr = {171,72,19,16,118,51,210,7,18};

    //定义一个求和变量

    int sum = 0;

    //遍历数组,获取到数组中的每一个元素

    for(int x=0; x

    //判断该元素是否满足如下要求,如果是就累加,否则,不处理它

    if((arr[x]%10 != 7) && (arr[x]/10%10 !=7) && (arr[x]%2 == 0)) {

    sum+= arr[x];

    }

    }

    //输出结果

    System.out.println("sum:"+sum);

    }

    }

    2.5 裁判评分

    需求:

    (1)在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。

    (2)选手的最后得分为:去掉一个最高分和一个最低分后 其余4个选手的平均值。

    (3)请写代码实现。(不考虑小数部分)

    public class Demo06Test {

    public static voidmain(String[] args) {

    //定义一个长度为6的数组

    int[] arr= new int[6];

    //通过键盘录入的方式给出评委的分数

    Scanner sc= new Scanner(System.in);

    for(int x=0; x

    System.out.println("请给出第"+(x+1)+"个评委的分数(0-100):");

    /*int number = sc.nextInt();

    arr[x] = number;*/

    arr[x] = sc.nextInt();

    }

    //写方法实现获取数组中的最大值,最小值

    int max= getMax(arr);

    int min= getMin(arr);

    //写方法实现数组元素的求和

    int sum= sum(arr);

    //(和-最高分-最低分)/(arr.length-2)

    int avg = (sum-max-min)/(arr.length-2);

    //输出分数即可

    System.out.println("该选手的最终得分是:"+avg);

    }

    //数组元素求和

    public static int sum(int[] arr) {

    int sum = 0;

    for(int x=0; x

    sum+= arr[x];

    }

    return sum;

    }

    //数组中的最小值

    public static int getMin(int[] arr) {

    int min= arr[0];

    for(int x=1; x

    if(arr[x] < min) {

    min= arr[x];

    }

    }

    return min;

    }

    //数组中的最大值

    public static int getMax(int[] arr) {

    int max= arr[0];

    for(int x=1; x

    if(arr[x] > max) {

    max= arr[x];

    }

    }

    return max;

    }

    }

    2.6 数组元素反转

    需求:

    (1)键盘录入5个int类型的数据存储数组arr中

    (2)定义方法将arr数组中的内容反转

    (3)定义方法对反转后的数组进行遍历

    画图分析

    public class Demo07Test {

    public static voidmain(String[] args) {

    // 定义一个长度为5的数组

    int[] arr= new int[5];

    // 通过键盘录入数据给数组中的元素赋值

    Scanner sc= new Scanner(System.in);

    for (int x= 0; x< arr.length; x++) {

    System.out.println("请给出第" + (x+ 1) + "个元素");

    arr[x] = sc.nextInt();

    }

    System.out.println("反转前的数组元素:");

    printArray(arr);

    // 定义方法将arr数组中的内容反转

    reverse(arr);

    System.out.println("反转后的数组元素:");

    //定义方法遍历数组

    printArray(arr);

    }

    //遍历数组

    public static void printArray(int[] arr) {

    System.out.print("[");

    for(int x=0;x

    if(x== arr.length-1) {

    System.out.println(arr[x]+"]");

    }else {

    System.out.print(arr[x]+", ");

    }

    }

    }

    /*

    * 两个明确: 返回值类型:void 参数列表:int[] arr

     */

    public static void reverse(int[] arr) {

    /*

    利用for循环遍历数组

    初始化表达式定义两个指针,记录第一个元素和最后一个元素:int min = 0,max = arr.length-1;

    布尔表达式:min

    步进表达式:min++,max--;

    */

    for(int min=0,max=arr.length-1;min<=max;min++,max--) {

    //利用第三方变量完成数组中的元素交换

    int temp= arr[min];

    arr[min] = arr[max];

    arr[max] = temp;

    }

    }

    }

    2.7 数组元素基本查找

    需求:数组元素查找(查找指定元素第一次在数组中出现的索引)

    (1)给定数组int[] arr = {5,7,3,2,5};

    (2)要查询的元素通过键盘录入的方式确定

    (3)定义一个查找数组元素第一次出现位置的方法(注,要查找的元素就是键盘录入的数据)

    public class Demo08Test {

    public static voidmain(String[] args) {

    // 给定数组int[] arr = {5,7,3,2,5};

    int[] arr = { 5, 7, 3, 2, 5 };

    //要查询的元素通过键盘录入的方式确定

    Scanner sc= new Scanner(System.in);

    System.out.println("请输入要查找的元素:");

    int number= sc.nextInt();

    //定义一个查找数组元素第一次出现位置的方法

    //调用方法

    int index =getIndex(arr, number);

    System.out.println("index:"+index);

    }

    /*

    * 两个明确:

    * 返回值类型:int

    * 参数列表:int[] arr,int value

     */

    public static int getIndex(int[] arr,int value) {

    //遍历数组,获取到每一个元素和要查找的元素进行比较,

    /*

    for(int x=0; x

    if(arr[x] == value) {

    //如果相等,就直接把该处的索引返回。

    return x;

    }

    }

    //遍历完毕,没有相等的返回-1。

    return -1;

    */

    int index = -1;

    for(int x=0; x

    if(arr[x] == value) {

    index= x;

    break;

    }

    }

    return index;

    }

    }

    2.8 数据加密

    需求:键盘录入数据,要求数据是四位的整数,现需要对数据进行加密,加密规则如下:

    (1)每位数字都加上5,然后除以10的余数代替该数字,

    (2)再将第一位和第四位交换,第二位和第三位交换,

    (3)请把加密后的数据输出到控制台

    public class Demo09Test {

    public static voidmain(String[] args) {

    //键盘录入一个四位数

    Scanner sc= new Scanner(System.in);

    //接收数据

    System.out.println("请输入一个四位数:");

    int number= sc.nextInt();

    //分别得到该数据的每一个位上的数据

    int ge= number%10;

    int shi= number/10%10;

    int bai= number/10/10%10;

    int qian= number/10/10/10%10;

    //定义一个数组

    int[] arr= new int[4];

    arr[0] = qian;

    arr[1] = bai;

    arr[2] = shi;

    arr[3] = ge;

    //遍历数组进行加密

    for(int x=0; x

    //加密规则

    //每位数字都加上5,然后除以10的余数代替该数字

    arr[x] += 5;

    arr[x] %= 10;

    }

    //再将第一位和第四位交换,第二位和第三位交换

    int temp= arr[0];

    arr[0] = arr[3];

    arr[3] = temp;

    temp= arr[1];

    arr[1] = arr[2];

    arr[2] = temp;

    //输出加密后的数据

    for(int x=0; x

    System.out.print(arr[x]);

    }

    System.out.println();

    }

    }

    第3章 知识点相关题

    3.1 定义一个方法,可以计算一个int数组所有元素的奇数累加和、偶数累加和的差值;将结果返回;要求结果为正数; 

    public class Test01 {

    public static void main(String[] args) {

    int[] arr = {1,2,3,4,5,6,7,8,9,10};

    intnum = getNum(arr);

    System.out.println("数组中奇偶数和之差为:"+num);

    }

    private static int getNum(int[] arr) {

    int jSum = 0;

    int oSum = 0;

    for (int i = 0; i < arr.length; i++) {

    if(arr[i] % 2 == 0){

    oSum += arr[i];

    }else{

    jSum += arr[i];

    }

    }

    if(oSum > jSum)

    return oSum-jSum;

    else

    return jSum - oSum;

    }

    }

    3.2 接收一个字符串类型的数组,返回该数组中第2个元素,如果数组长度小于2,就返回对不起,没有这个人

    public class Test02 {

    public static void main(String[] args) {

    String[] str= {"Java","C++","前端移动","UI"};

    String string = getS(str);

    System.out.println(string);

    }

    private static String getS(String[] str) {

    if(str.length < 2)

    return "对不起,没有这个人";

    else

    return str[1];

    }

    }

    3.3 现在有如下的一个数组:int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}要求定义一个方法将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5}最后遍历两个数组

    public class Test03 {

    public static void main(String[] args) {

    int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};

    getArr(oldArr);

    }

    private static void getArr(int[] oldArr) {

    int len = 0;

    for (int i = 0; i < oldArr.length; i++) {

    if(oldArr[i] != 0){

    len++;

    }

    }

    System.out.println(len);

    int[] arr = new int[len];

    int index = 0;

    for (int i = 0; i < oldArr.length; i++) {

    if(oldArr[i] != 0){

    arr[index] = oldArr[i];

    index++;

    }

    }

    for (int i = 0; i < oldArr.length; i++) {

    System.out.print(oldArr[i]);

    }

    System.out.println();

    for (int i = 0; i < arr.length; i++) {

    System.out.print(arr[i]);

    }

    }

    }

    3.4 定义一个方法传入一个5-10之间的随机数,根据传入的随机数创建数组,并向该数组再次存入5-10之间的几个随机元素。最后返回该数组并遍历

    import java.util.Random;

    public class Test04 {

    public static void main(String[] args) {

    Random r = new Random();

    int num = r.nextInt(6)+5;

    int[] arr = getArr(num);

    for (int i = 0; i < arr.length; i++) {

    System.out.println(arr[i]);

    }

    }

    private static int[] getArr(int num) {

    Random r = new Random();

    int[] arr = new int[num];

    for (int i = 0; i < arr.length; i++) {

    arr[i] = r.nextInt(6)+5;

    }

    return arr;

    }

    }

    3.5 编写一个方法,实现如下功能:遍历数组并打印,要求打印格式为[11, 22, 33, 44, 55]。在主方法里定义数组{11,22,33,44,55},调用方法遍历数组。

    public class Test05 {

    public static void main(String[] args) {

    int[] arr = {11,22,33,44,55};

    printArr(arr);

    }

    private static void printArr(int[] arr) {

    System.out.print("{");

    for (int i = 0; i < arr.length; i++) {

    if(i != arr.length-1){

    System.out.print(arr[i]+",");

    }else{

    System.out.print(arr[i]+"}");

    }

    }

    }

    }

    第4章 代码题

    4.1 定义一个方法:接收一个int数组,将数组中所有偶数放入到一个新数组中并返回

    答案:

    public class Test01 {

    public static void main(String[] args) {

    int[] arr = {1,3,4,6,9,10,200};

    int[] newArr = getArr(arr);

    for (int i = 0; i < newArr.length; i++) {

    int j = newArr[i];

    System.out.println(j);

    }

    }

    public static int[] getArr(int[] arr){

    //获取新数组长度

    int length = 0;

    for (int i = 0; i < arr.length; i++) {

    int thisNumber = arr[i];

    //如果是偶数 长度+1

    if(thisNumber%2==0){

    length++;

    }

    }

    //根据长度创建新数组

    int[] newArr = new int[length];

    int j = 0;

    for (int i = 0; i < arr.length; i++) {

    int thisNumber = arr[i];

    if(thisNumber%2==0){

    newArr[j] =arr[i];

    j++;

    }

    }

    return newArr;

    }

    }

    4.2 定义方法,实现查找数组中间值的功能,中间值有一个,就打印一个;中间值有两个,则打印两个。

    public class Demo05 {

    public static void main(String[] args) {

    int[] arr = {1,3,4,5,6,7,4,9};

    int[] arr2 = {24,45,56,67,78,89,89};

    int[] a = getModdle(arr);

    int[] b = getModdle(arr2);

    System.out.println("数组arr2中间值为:");

    for (int i = 0; i < b.length; i++) {

    System.out.print(b[i]+" ");

    }

    System.out.println();

    System.out.println("数组arr中间值为:");

    for (int i = 0; i < a.length; i++) {

    System.out.print(a[i]+" ");

    }

    }

    private static int[] getModdle(int[] arr) {

    int count = arr.length;

    if(count % 2 == 0){

    int[] array = {arr[arr.length / 2],arr[arr.length / 2 - 1]};

    return array;

    }else{

    int[] array = {arr[arr.length / 2]};

    return array;

    }

    }

    }

    4.3 1.返回一个存储10个4位数的随机整数 1000-9999的数组(注意思考怎么产生一个4位的随机整数)(不能重复)2.在方法中遍历这个随机数数组

    import java.util.Random;

    public class Demo{

    public static void main(String[] args){

        int[] arr = method();

    for(int i = 0; i < arr.length; i++){

    System.out.println(arr[i]);

    }

    }

    public static int[] method(){

    Random r = new Random();

    int[] arr = new int[10];

    int i = 0;

    while(i < 10){

    int num = r.nextInt(9000)+1000;

    for(int j = 0 ; j < arr.length; j++){

    if(num == arr[i]){

    break;

    }

    }

    arr[i]=num;

    i++;

    }

    return arr;

    }

    }

    长按指纹,识别二维码,一键关注Java,大数据

    长按指纹,识别二维码,一键关注Python

    长按指纹,识别二维码,一键关注产品经理

    长按指纹,识别二维码,一键加QQ学习群

    相关文章

      网友评论

        本文标题:第六天 知识点练习与回顾【悟空教程】

        本文链接:https://www.haomeiwen.com/subject/oaogdftx.html