A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 罗安迪 于 2014-3-23 18:07 编辑

很多同学都说跳出循环后再打印。。。问题是 跳出循环需要标识符号 而程序员是应该尽量减少对客户的要求 即不应该让他们输入比如-1来标识结束 而是最好当客户按回车键时跳出循环 那么就可以通过判断最后输入是否为\n 或\r\n来结束循环

可是即使把这个判断中止加入循环 还是没办法结束啊,为什么呢? 还是结束了,那么为什么又没有输出呢? 我试过很多方案啦没成功 = =。 假如筒鞋们试过后成功记得分享我哦 谢谢:)
其实问题就是 如何再连续输入不定长度数字后按回车键跳出循环 ,我在网上也没找到答案,下面滴网站也是我的问题。。。。没有结果。。。
http://bbs.csdn.net/topics/380031599

再练习scanner的时候写的代码。

arrayList<Integer> b = arrayList<Integer>();

scanner sc = new scanner();

while(sc.hasNext())

     int x = sc.nextInt;
     b.add(x);
     out.println(b);



假如我输入 23 76 7

结果会输出
[23]
[23,76]
[23,76,7]

。。。。一直想不通该怎么让结果只输出最后一行。

假如不用scanner用什么也会好点呢?



评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

9 个回复

倒序浏览
本帖最后由 无道 于 2014-3-19 17:42 编辑

哥们,我觉得你可以让循环结束后在输出一下。这个类 我还没有学到呢,,个人意见。  还有就是刚看了一下api,,,scanner类,,的构造函数都是有参数的。
回复 使用道具 举报
  1. List<Integer> list = new ArrayList<Integer>();
  2. Scanner sc = new Scanner();
  3. while(sc.hasNext()){
  4.     list.add(sc.nextInt());
  5. }
  6. System.out.println(list);
复制代码
回复 使用道具 举报
你的输出直接放在循环里,当然每次循环都要打印一遍当前的b了。
回复 使用道具 举报
hyace 发表于 2014-3-19 19:03
你的输出直接放在循环里,当然每次循环都要打印一遍当前的b了。

是的  不过 问题是  你要有个结束的标志  比如换行符 当换行时候就会输出 可是 事实不是的···可以试试 ···找到原因告诉我赛~~谢谢!
回复 使用道具 举报

= = 我也这样过···有问题啊  最后根本就在按了回车后 都不会有输出呢
回复 使用道具 举报
hyace 中级黑马 2014-3-19 23:16:58
7#
哦你这个是成了死循环了吧,它判断你一直有输入,while就跳不出来了。可以加一个if语句:
  1. if (x == -1) break;
  2. else b.add(x);
复制代码

当你输入-1时跳出。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
我也没学过Scanner。。不过如果仅仅是把最后一行输出的话,只要把打印命令跳出循环即可
  1. import java.util.ArrayList;
  2. import java.util.Scanner;

  3. class Demo{
  4.         public static void main(String[] args){
  5.                 ArrayList<Integer> b = new ArrayList<Integer>();
  6.                 Scanner sc = new Scanner("23 76 7");
  7.                 while(sc.hasNext())
  8.                 {
  9.                      int x = sc.nextInt();
  10.                      b.add(x);
  11.                 }
  12.                 System.out.println(b);
  13.         }
  14. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
  1. public static void main(String[] args) {
  2.    ArrayList<Integer> b = new ArrayList<Integer>();
  3.    Scanner sc = new Scanner(System.in);
  4. <div style="text-align: left;"><span style="line-height: 1.5;">  while(sc.hasNext())</span><span style="line-height: 1.5;">{</span></div><div style="text-align: left;"><span style="line-height: 1.5;">        int x = sc.nextInt();</span></div><div style="text-align: left;"><span style="line-height: 1.5;">       b.add(x);</span></div><div style="text-align: left;"><span style="line-height: 1.5;">      System.out.println(b);</span></div><div style="text-align: left;"><span style="line-height: 1.5;">   }</span></div><div style="text-align: left;"><span style="line-height: 1.5;">}</span></div><div style="text-align: left;">//:测试结果如图:</div>
复制代码

捕获.JPG (24.33 KB, 下载次数: 14)

捕获.JPG

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
刚发错了,代码会循环下去,直到你关闭虚拟机.
  1. public static void main(String[] args) {
  2.                 ArrayList<Integer> b = new ArrayList<Integer>();
  3.                 Scanner sc = new Scanner(System.in);
  4.                 while(sc.hasNext())
  5.                 {
  6.                      int x = sc.nextInt();
  7.                      b.add(x);
  8.                      System.out.println(b);
  9.                 }
  10.         }
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马