黑马程序员技术交流社区

标题: 黑马程序员——基础篇——IO(关于hasNextDouble()的使用心得 [打印本页]

作者: Himoriarty    时间: 2015-4-8 16:46
标题: 黑马程序员——基础篇——IO(关于hasNextDouble()的使用心得
本帖最后由 Himoriarty 于 2015-6-10 14:01 编辑

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------


今天在写个程序,从键盘中对数组进行赋值,赋值前判断输入信息是否符合数组的元素类型。
  1. double[] array = new double[5];
  2. Scannner input = new Scanner(System.in);

  3. for(int i=0; i < 5; i++)
  4. {
  5.          if(input.hasNextDouble())
  6.          {
  7.                array[i] = input.nextDouble();
  8.           }
  9.           else
  10.           {
  11.                 i--;
  12.           }
  13. }
复制代码


如果输入一个字符比如s,程序会死机,再也输不进去内容,查找后知道hasNextDouble()这个函数只判断一次,一次之后全部判定为false,所以程序会死机,如果把创建Scanner对象放进循环内则可以消除这个问题。
  1. double[] array = new double[5];


  2. for(int i=0; i < 5; i++)
  3. {
  4.          Scannner input = new Scanner(System.in);
  5.          if(input.hasNextDouble())
  6.          {
  7.                array[i] = input.nextDouble();
  8.           }
  9.           else
  10.           {
  11.                 i--;
  12.           }
  13. }
复制代码

      这样就可以重复输入,如果输入为非指定类型,则原地不动再建立一次对象就可以重新判定,和之前的没关系了。
      所以觉得好多东西都是知道是什么,会用,但是如果说真的会用吗,还真不能说,同样是这些东西,灵活运用很关键。就像我们学过数学的基础知识,有些人可以用这些最简单的加减乘除得出很多amazing的理论,但是有些人只会拿来买菜算算多少钱。还是没有灵活运用这些基础的知识,没有把问题分解的彻底。
      这个过程让我更加喜欢变成了,编程序最开心的不是敲代码,是把思考问题,和语用知识的结合,这个过程让我能够像和尚坐禅一样,好像自己在宇宙中飘着,周围都安静了,感觉真好。
----------android培训java培训、java学习型技术博客、期待与您交流!------------

作者: 阿霞    时间: 2015-4-8 17:24
宇宙中飘着......
作者: Himoriarty    时间: 2015-4-8 18:15
阿霞 发表于 2015-4-8 17:24
宇宙中飘着......

有点夸张了啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2