java _循环练习和数组练习

  练习
  
  1.输出所有的水仙花数,所谓水仙花数是指一个数3位数,其每位数字立方和等于其本身,如153 = 1*1*1 + 3*3*3 + 5*5*5(很经典的题目)
  
  分析:
  
  通过观察发现,本题目要实现打印符合要求的数字(即水仙花数)。
  
  明确什么样的数就是水仙花数。水仙花数是指一个3位数(100-999之间),其每位数字立方之和等于该3位数本身。如153 = 1*1*1 + 3*3*3 + 5*5*5,
  
  即 3位数本身 = 百位数立方 + 十位数立方 + 个位数立方;
  
  获取水仙花范围内的所有3位数(100-999之间的每个3位数)
  
  判断该3位数是否满足水仙花数,满足,打印该3位数
  
  解题步骤:
  
  使用for循环,得到100-999之间的每个3位数
  
  获取3位数中百位数字、十位数字、个位数字
  
  使用if条件语句,判断该3位数是否满足水仙花数,满足,使用输出语句,打印该3位数
  
  View Code
  
  在介绍这个题前,我们先学习ASCII码表吧
  
  American Standard Code for Information Interchange,美国标准信息交换代码.
  
  在计算机中,所有的数据在存储和运算时都要使用二进制数表示, a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号, 在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
  
  数字0-9对应ASCII编码十进制为48-57, 字母a-z对应ASCII编码十进制为97-122,字母A-Z对应ASCII编码十进制为65-90,记住!!!
  
  2.利用for循环打印ABCDEFG...XYZ,26个大写字母与26个小写字母:
  
  View Code
  
  3. 利用for循环打印 9*9 表?
  
  View Code
  
  4.编写程序求 1+3+5+7+……+99 的和值
  
  View Code
  
  我们可以先预习一下数组(点)
  
  一维数组:
  
  1.根据键盘录入索引,查找对应星期几:
  
  View Code
  
  2.数组元素查找(查找指定元素第一次在数组中出现的索引)
  
  View Code
  
  3.数组获取最值(获取数组中的最大值最小值)
  
  View Code
  
  4.定义打印数组元素方法,按照给定的格式打印[11, 33, 44, 22, 55]
  
  View Code
  
  5.实现原数组元素倒序存放操作
  
  View Code
  
  6.数组元素的选择排序:
  
  题目分析:
  
  通过观察发现,本题目要实现把数组元素{13,46,22,65,3}进行排序
  
  提到数组排序,就要进行元素值大小的比较,通过上图发现,我们想完成排序要经过若干次的比较才能够完成。
  
  上图中用每圈要比较的第一个元素与该元素后面的数组元素依次比较到数组的最后一个元素,把小的值放在第一个数组元素中,数组循环一圈后,则把最小元素值互换到了第一个元素中。
  
  数组再循环一圈后,把第二小的元素值互换到了第二个元素中。按照这种方式,数组循环多圈以后,就完成了数组元素的排序。这种排序方式我们称为选择排序。
  
  解题步骤:
  
  使用for循环(外层循环),指定数组要循环的圈数(通过图解可知,数组循环的圈数为数组长度 - 1)
  
  在每一圈中,通过for循环(内层循环)完成数组要比较的第一个元素与该元素后面的数组元素依次比较到数组的最后一个元素,把小的值放在第一个数组元素中
  
  在每一圈中,要参与比较的第一个元素由第几圈循环来决定。如上图所示
  
  a)       进行第一圈元素比较时,要比较的第一个元素为数组第一个元素,即索引为0的元素
  
  b)       进行第二圈元素比较时,要比较的第一个元素为数组第二个元素,即索引为1的元素
  
  c)        依次类推,得出结论:进行第n圈元素比较时,要比较的第一个元素为数组第n个元素,即数组索引为n-1的元素
  
  View Code
  
  7.数组冒泡排序:
  
  图解:数组元素{13,46,22,65,3}
  
  题目分析:
  
  通过观察发现,本题目要实现把数组元素{13,46,22,65,3}进行排序
  
  提到数组排序,就要进行元素值大小的比较,通过上图发现,我们想完成排序要经过若干次的比较才能够完成。
  
  上图中相邻的元素值依次比较,把大的值放后面的元素中,数组循环一圈后,则把最大元素值互换到了最后一个元素中。数组再循环一圈后,把第二大的元素值互换到了倒数第二个元素中。按照这种方式,数组循环多圈以后,就完成了数组元素的排序。这种排序方式我们称为冒泡排序。
  
  解题步骤:
  
  使用for循环(外层循环),指定数组要循环的圈数(通过图解可知,数组循环的圈数为数组长度 - 1)
  
  在每一圈中,通过for循环(内层循环)完成相邻的元素值依次比较,把大的值放后面的元素中
  
  每圈内层循环的次数,由第几圈循环来决定。如上图所示
  
  a)       进行第一圈元素比较时,内层循环次数为数组长度 - 1
  
  b)       进行第二圈元素比较时,内层循环次数为数组长度 - 2
  
  c)        依次类推,得出结论:进行第n圈元素比较时,内层循环次数为数组长度 - n
  
  View Code
  
  8.数组元素二分查找:
  
  图解:
  
  View Code
  
  二维数组:
  
  1.二维数组遍历
  
  View Code
  
  2.需求:公司年销售额求和, 某公司按照季度和月份统计的数据如下:单位(万元)
  
  第一季度:22,66,44
  
  第二季度:77,33,88
  
  第三季度:25,45,65
  
  第四季度:11,66,99
  
  View Code
  
class Player www.michenggw.com{
   //等级
   private  int level;
   //生命值
   private int life;

   public Player(www.yigouyule2.cn int level, int life) {
       super();
       this.level =www.mcyllpt.com/ level;
       this.life = life;
   }
   //保存信息
   public SaveMsg saveStateToMemento(www.mhylpt.com) {
       return new SaveMsg(level,life);
   }
   
   //恢复信息
   public void getStateFromMemento(SaveMsg sm) {
       this.level = sm.getLevel();
       this.life = sm.getLife();
   }
   
   //获取当前状态
   public void getStatus() {
       System.out.println("玩家xuwujing当前信息:");
       System.out.println("人物等级:"+level+",人物生命:"+life);
   }
   
   //练级
   public void leveling() {
       this.level = this.level+1;
       this.life = this.life+10;
       System.out.println("恭喜玩家xuwujing升级!等级提升了1,生命提升了10!");
   }
   
   //挑战BOSS
   public boolean challengeBOSS() {
       //设置条件
       return this.level>www.gcyl152.com/  2&&this.life>100;
  ---------------------------------------------------------------------------------------------------------------------------------------------------
  
  补充
  
  基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
  
  引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
  
  我们可以通过下面代码了解:
  
  View Code
  
  可以如下图解
  
  基本数据类型的值传递:
  
  引用数据类型的值传递
  
  Java中到底是传值还是传址?
  
  1,既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
  
  2,java中只有传值,因为地址值也是值(出去面试都说这种,支持者是高司令(java之父))

转载于:https://my.oschina.net/u/3386278/blog/2907455

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值