数组
1.保存元素个数预约义,数组是必须实例化的对象,声明后大小不可变。
2.数组保存的能够是基本数据类型,对象(包括本身编写的),数组也能够做为参数
3.数组的参数能够用方法变成可变长度参数,也能够经过命令行输入。
4.二维数组:int[][]html
问题1解决方案:也就是对于这个题目,上述的第二种思路是解决不了的(个人尝试是这样的)java
问题2:为何数组的索引值从0开始?git
问题2解决方案:百度。书上的解释是,从计算方法上看,“访问第一百个元素与第一个元素同样简单”。不过在我看来是“访问第一个元素与第一百个同样困难”。因而百度的一篇cenalulu的MySQL博客有较详细的介绍:
最重要的是“历史缘由”,再有就是0的标号写法能够节省编译时间,能够更优雅的表示数组字串(不用+1什么的,差1错误)编程
问题3:书上的一道例题是要找出用户输入的字符串中的大小写字母,并计算出出现次数数组
问题3解决方案:经过分析和参考了其余同窗的博客,理解这个例题的作法:
首先这个程序是经过将字符和Unicode字符集对应相对字符的位置,还有循环,从而把大小写的26字母打印出来的。而后用charAt把相应的字符拿出来,把它做为数组的索引,出现一次,就加1,从而达到计数的目的。编程语言
问题1:课后习题PP8.5。一开始的思路是如图:
首先是将输入的数字付给num1,再把num1存在数组里,固然也能够直接存在数组里,我这样作是为了测试会不会阻断循环时的输入(结果确实是的)。输入完数字以后会接着要输入y/n,这就是为了做为是否结束输入的依据,便是否结束循环。按道理来讲,若是我输入的是“n”,也就是“judge==n”成立,应该接着循环,提示输入数字才对啊,然而事实是直接结束循环。oop
问题1解决方案:我也尝试了不一样的语句,好比在循环里面用判断语句,或是再嵌套一个循环,结果都是只能循环一次。如图:
这里还有一个问题就是:一开始我声明的对象只有scan一个,而后用他进行了两次输入,这是不行的(会直接结束,没法输入),要两个对象,各自调用方法。
【更新】通过我不懈的努力,最终让程序的结果符合了预期:如图
所作的修改只有画横线一处,把原先的相等性运算符“==”改为了方法equals,程序是正常运行了。但还有一个疑问就是,其实这两个是等价的吧,为何前面的那个不行呢?
这里还有一个要记录的,数组的方法.length是数组的长度,而不是已经有了多少输入保存进去的数据(害我平均数老是算不对)
还有一个不完美的地方就是:依照题目的意思输入的输入的数不能超过50,这就致使了最后输出数组中值的时候,会把没输的值所有是0输出出来。学习
问题2解决方案:这个问题想了好久没有想出来。最后参考了蒋子行同窗的代码,不由感叹蒋子行同窗真的是很厉害啊。原本是想参考一下有个思路,最后发现差很少是抄下来了,由于他写的代码真的简洁,很厉害。代码如图:
一开始个人作法是,一个一个的向索引处存值,而后就没有而后了,由于真的不知道怎么去统计。
参考了蒋子行同窗的代码(跟书上的例题同样,不过当时的例题没看懂,这下理解了):
把输入的值做为数组的索引,每输入一次就加一,这样就解决了统计次数的问题。
另一点就是用的continue语句,把数组内其它没输满的数字(初始化为0),去掉。这样就达到了只打印出已输入的数值出现状况。测试
错题1:
命令行
错题1解析:最内层的循环(在示例中是for循环)被破坏,而且在for循环结束后继续执行。
错题2:
错题2解析:这适用于int、short、byte、long、char和boolean,而不是double或float变量。若是两个双变量x和y正在被测试,(x == y)只有当它们刚好等于最后一个小数点时才是正确的。相反,比较这两个值是很常见的,可是容许在值上有细微的差异。
错题3:
错题3解析:尽管应该避免使用continue语句,但若是可能的话,能够在Java的三个循环中使用它们:for、while和do-while。
错题4:
错题4解析:Java测试的条件操做符在本例中为条件(x < 0),若是为真,则返回值后的值?(本例中为x),若是为false,则返回:(在本例中为0)。原始的if语句是将y赋给x (x < 0)和0。这将经过将y赋值为x或0 (x < 0)来完成,如a在B中所示,x被赋值为y或0,这是向后的。在C中,条件操做符是语法无效的。在D中,根据(x < 0), y将被设置为true或false,而E中的语句在语法上是无效的。
错题5:
错题5解析:变量x从10开始。每一个循环经过循环,x递减,循环最后退出,一旦x再也不大于0,在这个例子中,当x变成0。因此循环体执行x = 10, x = 9, x = 8,下面是x = 0。这是11倍。
错题6:
错题6解析:变量j从字符串长度到1,每次打印出位置j-1的字符。长度为1的字符是第一个字符,这是字符串的最后一个字符。它一直持续到j = 1,并输出位置j - 1或第0字符的字符,以便向后打印整个字符串。
错题7:
错题7解析:这个循环初始化j到0,并将其与1000进行比较,可是在每次循环迭代以后都不会改变。在实际中,循环将会随着运行时错误而终止,最终当我变得太大时,一个值存储在内存中,但逻辑上,这是一个无限循环。
错题8:
错题8解析:诚然,while循环能够是无限循环,但Java for-loop也能够是无限循环。在许多其余编程语言中,for循环都有一个开始和结束点,可是Java for循环比大多数其余语言的for循环要灵活得多。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 309/309 | 1/1 | 20/20 | |
第二周 | 269/578 | 1/2 | 18/38 | |
第三周 | 236/776 | 1/3 | 22/60 | |
第四周 | 507/1283 | 2/5 | 30/90 | |
第五周 | 631/1914 | 1/6 | 30/120 | |
第六周 | 529/2443 | 1/7 | 25/145 |