Java入门之~思维提升

简介: 思路: 1:定义一个数组,用动态初始化完成数组元素的初始化,长度为6 2:键盘录入评委分数 3:由于是6个评委打分,所以,接收评委分数的操作,用循环改进 4:定义方法实现获取数组中的最高分(数组最大值),调用方法 5:定义方法实现获取数组中的最低分(数组最小值) ,调用方法 6:定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法 7:按照计算规则进行计算得到平均分 8:输出平均分

1.Debug模式

1.1什么是Debug模式

是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。

1.2Debug模式操作流程

  • 如何加断点
  • 选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可
  • 如何运行加了断点的程序
  • 在代码区域右键Debug执行
  • 看哪里
  • 看Debugger窗口
  • 看Console窗口
  • 点哪里
  • 点Step Into (F7)这个箭头,也可以直接按F7
  • 如何删除断点
  • 选择要删除的断点,单击鼠标左键即可
  • 如果是多个断点,可以每一个再点击一次。也可以一次性全部删除

2.基础练习(参考题目)

2.1减肥计划if版本

2.1.1案例需求

输入星期数,显示今天的减肥活动          周一:跑步          周二:游泳          周三:慢走          周四:动感单车          周五:拳击          周六:爬山          周日:好好吃一顿

2.1.2代码实现

/*

   思路:

       1:键盘录入一个星期数,用一个变量接收

       2:对星期数进行判断,这里用 if 语句实现

       3:在对应的语句控制中输出对应的减肥活动

*/

publicclassTest01 {

   publicstaticvoidmain(String[] args) {

       //键盘录入一个星期数,用一个变量接收

       Scannersc=newScanner(System.in);

       System.out.println("请输入一个星期数:");

       intweek=sc.nextInt();

       //对星期数进行判断,这里用 if 语句实现

       if (week<1||week>7) {

           System.out.println("你输入的星期数有误");

       } elseif (week==1) {

           System.out.println("跑步");

       } elseif (week==2) {

           System.out.println("游泳");

       } elseif (week==3) {

           System.out.println("慢走");

       } elseif (week==4) {

           System.out.println("动感单车");

       } elseif (week==5) {

           System.out.println("拳击");

       } elseif (week==6) {

           System.out.println("爬山");

       } else {

           System.out.println("好好吃一顿");

       }

   }

}

2.2减肥计划switch版本

2.2.1案例需求

输入星期数,显示今天的减肥活动          周一:跑步          周二:游泳          周三:慢走          周四:动感单车          周五:拳击          周六:爬山          周日:好好吃一顿

2.2.2代码实现

/*

   思路:

       1:键盘录入一个星期数,用一个变量接收

       2:对星期数进行判断,这里用 switch 语句实现

       3:在对应的语句控制中输出对应的减肥活动

   导包:

       1:手动导包  import java.util.Scanner;

       2:快捷键导包 Alt+Enter

       3:自动导包

*/

publicclassTest02 {

   publicstaticvoidmain(String[] args) {

       //键盘录入一个星期数,用一个变量接收

       Scannersc=newScanner(System.in);

       System.out.println("请输入一个星期数:");

       intweek=sc.nextInt();

       //对星期数进行判断,这里用 switch 语句实现

       switch (week) {

           case1:

               System.out.println("跑步");

               break;

           case2:

               System.out.println("游泳");

               break;

           case3:

               System.out.println("慢走");

               break;

           case4:

               System.out.println("动感单车");

               break;

           case5:

               System.out.println("拳击");

               break;

           case6:

               System.out.println("爬山");

               break;

           case7:

               System.out.println("好好吃一顿");

               break;

           default:

               System.out.println("你输入的星期数有误");

       }

   }

}

2.3逢七跳过

2.3.1案例需求

朋友聚会的时候可能会玩一个游戏:逢七过。        规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。        为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过规则的数据。        这样,大家将来在玩游戏的时候,就知道哪些数据要说:过。

2.3.2代码实现

/*

   思路:

       1:数据在1-100之间,用for循环实现数据的获取

       2:根据规则,用if语句实现数据的判断:要么个位是7,要么十位是7,要么能够被7整除

       3:在控制台输出满足规则的数据

*/

publicclassTest03 {

   publicstaticvoidmain(String[] args) {

       //数据在1-100之间,用for循环实现数据的获取

       for(intx=1; x<=100; x++) {

           //根据规则,用if语句实现数据的判断:要么个位是7,要么十位是7,要么能够被7整除

           if(x%10==7||x/10%10==7||x%7==0) {

               //在控制台输出满足规则的数据

               System.out.println(x);

           }

       }

   }

}

2.4不死神兔

2.4.1案例需求

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

2.4.2代码实现

/*

  思路:

       1:为了存储多个月的兔子对数,定义一个数组,用动态初始化完成数组元素的初始化,长度为20

       2:因为第1个月,第2个月兔子的对数是已知的,都是1,所以数组的第1个元素,第2个元素值也都是1

       3:用循环实现计算每个月的兔子对数

       4:输出数组中最后一个元素的值,就是第20个月的兔子对数

*/

publicclassTest04 {

   publicstaticvoidmain(String[] args) {

       //为了存储多个月的兔子对数,定义一个数组,用动态初始化完成数组元素的初始化,长度为20

       int[] arr=newint[20];

       //因为第1个月,第2个月兔子的对数是已知的,都是1,所以数组的第1个元素,第2个元素值也都是1

       arr[0] =1;

       arr[1] =1;

       //用循环实现计算每个月的兔子对数

       for(intx=2; x<arr.length; x++) {

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

       }

       //输出数组中最后一个元素的值,就是第20个月的兔子对数

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

   }

}

2.5百钱白鸡

2.5.1案例需求

我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。        百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

2.5.2代码实现

/*

   思路:

       1:第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为 x=0,判断条件是x<=20

       2:第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为 y=0,判断条件是y<=33

       3:这个时候,用于表示鸡雏的变量 z = 100 – x – y

       4:判断表达式 z%3==0 和表达式 5*x + 3*y + z/3 = 100 是否同时成立,如果成立,输出对应的 x,y,z 的值,就是对应的鸡翁,鸡母,鸡雏的值

*/

publicclassTest05 {

   publicstaticvoidmain(String[] args) {

       //第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为 x=0,判断条件是x<=20

       for(intx=0; x<=20; x++) {

           //第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为 y=0,判断条件是y<=33

           for(inty=0; y<=33; y++) {

               //这个时候,用于表示鸡雏的变量 z = 100 – x – y

               intz=100-x-y;

               //判断表达式 z%3==0 和表达式 5*x + 3*y + z/3 = 100 是否同时成立

               if(z%3==0&&5*x+3*y+z/3==100) {

                   System.out.println(x+","+y+","+z);

               }

           }

       }

   }

}

2.6数组元素求和

2.6.1案例需求

有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和,        要求是:求和的元素个位和十位都不能是7,并且只能是偶数

2.6.2代码实现

/*

  思路:

       1:定义一个数组,用静态初始化完成数组元素的初始化

       2:定义一个求和变量,初始值是0

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

       4:判断该元素是否满足条件,如果满足条件就累加

       5:输出求和变量的值

*/

publicclassTest06 {

   publicstaticvoidmain(String[] args) {

       //定义一个数组,用静态初始化完成数组元素的初始化

       int[] arr= {68, 27, 95, 88, 171, 996, 51, 210};

       //定义一个求和变量,初始值是0

       intsum=0;

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

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

           //判断该元素是否满足条件,如果满足条件就累加

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

               sum+=arr[x];

           }

       }

       //输出求和变量的值

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

   }

}

2.7判断两个数组是否相同

2.7.1案例需求

定义一个方法,用于比较两个数组的内容是否相同

2.7.2代码实现

/*

   思路:

       1:定义两个数组,分别使用静态初始化完成数组元素的初始化

       2:定义一个方法,用于比较两个数组的内容是否相同

       3:比较两个数组的内容是否相同,按照下面的步骤实现就可以了

           首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false

           其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false

           最后循环遍历结束后,返回true

       4:调用方法,用变量接收

       5:输出结果

*/

publicclassTest07 {

   publicstaticvoidmain(String[] args) {

       //定义两个数组,分别使用静态初始化完成数组元素的初始化

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

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

       int[] arr2= {11, 22, 33, 44, 5};

       //调用方法,用变量接收

       booleanflag=compare(arr,arr2);

       //输出结果

       System.out.println(flag);

   }

   //定义一个方法,用于比较两个数组的内容是否相同

   /*

       两个明确:

           返回值类型:boolean

           参数:int[] arr, int[] arr2

    */

   publicstaticbooleancompare(int[] arr, int[] arr2) {

       //首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false

       if(arr.length!=arr2.length) {

           returnfalse;

       }

       //其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false

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

           if(arr[x] !=arr2[x]) {

               returnfalse;

           }

       }

       //最后循环遍历结束后,返回true

       returntrue;

   }

}

2.8查找元素在数组中出现的索引位置

2.8.1案例需求

已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。

并在控制台输出找到的索引值。如果没有查找到,则输出-1

2.8.2代码实现

/*

   思路:

       1:定义一个数组,用静态初始化完成数组元素的初始化

       2:键盘录入要查找的数据,用一个变量接收

       3:定义一个索引变量,初始值为-1

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

       5:拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环

       6:输出索引变量

*/

publicclassTest08 {

   publicstaticvoidmain(String[] args) {

       //定义一个数组,用静态初始化完成数组元素的初始化

       int[] arr= {19, 28, 37, 46, 50};

       //键盘录入要查找的数据,用一个变量接收

       Scannersc=newScanner(System.in);

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

       intnumber=sc.nextInt();

       //调用方法

       intindex=getIndex(arr, number);

       //输出索引变量

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

   }

   //查找指定的数据在数组中的索引

   /*

       两个明确:

           返回值类型:int

           参数:int[] arr, int number

    */

   publicstaticintgetIndex(int[] arr, intnumber) {

       //定义一个索引变量,初始值为-1

       intindex=-1;

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

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

           //拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环

           if(arr[x] ==number) {

               index=x;

               break;

           }

       }

       //返回索引

       returnindex;

   }

}

2.9数组元素反转

2.9.1案例需求

已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,        交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素。

2.9.2代码实现

/*

   思路:

       1:定义一个数组,用静态初始化完成数组元素的初始化

       2:循环遍历数组,这一次初始化语句定义两个索引变量,判断条件是开始索引小于等于结束索引

       3:变量交换

       4:遍历数组

*/

publicclassTest09 {

   publicstaticvoidmain(String[] args) {

       //定义一个数组,用静态初始化完成数组元素的初始化

       int[] arr= {19, 28, 37, 46, 50};

       //调用反转的方法

       reverse(arr);

       //遍历数组

       printArray(arr);

   }

   /*

       两个明确:

           返回值类型:void

           参数:int[] arr

    */

   publicstaticvoidreverse(int[] arr) {

       //循环遍历数组,这一次初始化语句定义两个索引变量,判断条件是开始索引小于等于结束索引

       for (intstart=0, end=arr.length-1; start<=end; start++, end--) {

           //变量交换

           inttemp=arr[start];

           arr[start] =arr[end];

           arr[end] =temp;

       }

   }

   /*

       两个明确:

           返回值类型:void

           参数:int[] arr

    */

   publicstaticvoidprintArray(int[] arr) {

       System.out.print("[");

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

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

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

           } else {

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

           }

       }

       System.out.println("]");

   }

}

2.10评委打分

2.10.1案例需求

在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。        选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。

2.10.2代码实现

/*

   思路:

       1:定义一个数组,用动态初始化完成数组元素的初始化,长度为6

       2:键盘录入评委分数

       3:由于是6个评委打分,所以,接收评委分数的操作,用循环改进

       4:定义方法实现获取数组中的最高分(数组最大值),调用方法

       5:定义方法实现获取数组中的最低分(数组最小值) ,调用方法

       6:定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法

       7:按照计算规则进行计算得到平均分

       8:输出平均分

*/

publicclassTest10 {

   publicstaticvoidmain(String[] args) {

       //定义一个数组,用动态初始化完成数组元素的初始化,长度为6

       int[] arr=newint[6];

       //键盘录入评委分数

       Scannersc=newScanner(System.in);

       //由于是6个评委打分,所以,接收评委分数的操作,用循环改进

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

           System.out.println("请输入第"+ (x+1) +"个评委的打分:");

           arr[x] =sc.nextInt();

       }

       //printArray(arr);

       //定义方法实现获取数组中的最高分(数组最大值),调用方法

       intmax=getMax(arr);

       //定义方法实现获取数组中的最低分(数组最小值) ,调用方法

       intmin=getMin(arr);

       //定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法

       intsum=getSum(arr);

       //按照计算规则进行计算得到平均分

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

       //输出平均分

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

   }

   /*

       两个明确:

           返回值类型:int

           参数:int[] arr

    */

   publicstaticintgetSum(int[] arr) {

       intsum=0;

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

           sum+=arr[x];

       }

       returnsum;

   }

   /*

       两个明确:

           返回值类型:int

           参数:int[] arr

    */

   publicstaticintgetMin(int[] arr) {

       intmin=arr[0];

       for(intx=1; x<arr.length; x++) {

           if(arr[x] <min) {

               min=arr[x];

           }

       }

       returnmin;

   }

   /*

       两个明确:

           返回值类型:int

           参数:int[] arr

    */

   publicstaticintgetMax(int[] arr) {

       intmax=arr[0];

       for(intx=1; x<arr.length; x++) {

           if(arr[x] >max) {

               max=arr[x];

           }

       }

       returnmax;

   }

   //遍历数组

   publicstaticvoidprintArray(int[] arr) {

       System.out.print("[");

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

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

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

           } else {

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

           }

       }

       System.out.println("]");

   }

}


相关文章
|
16天前
|
JSON NoSQL Java
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
33 0
|
16天前
|
Java
Java编程语言入门指南
Java编程语言入门指南
16 1
|
1天前
|
SQL Java 关系型数据库
零基础轻松入门Java数据库连接(JDBC)
零基础轻松入门Java数据库连接(JDBC)
6 0
|
1天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
6 0
|
3天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
10 0
|
3天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
26 1
|
4天前
|
Java 编译器 对象存储
java一分钟之Java入门:认识JDK与JVM
【5月更文挑战第7天】本文介绍了Java编程的基础——JDK和JVM。JDK是包含编译器、运行时环境、类库等的开发工具包,而JVM是Java平台的核心,负责执行字节码并实现跨平台运行。常见问题包括版本不匹配、环境变量配置错误、内存溢出和线程死锁。解决办法包括选择合适JDK版本、正确配置环境变量、调整JVM内存参数和避免线程死锁。通过代码示例展示了JVM内存管理和基本Java程序结构,帮助初学者更好地理解JDK和JVM在Java编程中的作用。
16 0
|
11天前
|
设计模式 算法 安全
Java多线程编程实战:从入门到精通
【4月更文挑战第30天】本文介绍了Java多线程编程的基础,包括线程概念、创建线程(继承`Thread`或实现`Runnable`)、线程生命周期。还讨论了线程同步与锁(同步代码块、`ReentrantLock`)、线程间通信(等待/通知、并发集合)以及实战技巧,如使用线程池、线程安全设计模式和避免死锁。性能优化方面,建议减少锁粒度和使用非阻塞算法。理解这些概念和技术对于编写高效、可靠的多线程程序至关重要。
|
12天前
|
存储 Java 开发工具
【Java探索之旅】用面向对象的思维构建程序世界
【Java探索之旅】用面向对象的思维构建程序世界
10 0
|
12天前
|
算法 Java 大数据
Java从入门到精通学习报告
Java从入门到精通学习报告
20 1