首页 新闻 会员 周边 捐助

java基础

0
悬赏园豆:5 [已解决问题] 解决于 2019-05-04 00:31

import java.util.Scanner;
class A
{
public static void main(String[] args)
{

   Scanner scan = new Scanner(System.in);
    // 从键盘接收数据

    // next方式接收字符串
    System.out.println("next方式接收:");
    // 判断是否还有输入
    System.out.println(scan.hasNext());
    if (scan.hasNext()) {-----------------------------------------这个省略和加上没区别啊,大佬解释
        String str1 = scan.next();
        System.out.println("输入的数据为:" + str1);
    }
    scan.close();

}

}

这个省略和加上没区别啊,大佬解释

fangpengcheng_方鹏程的主页 fangpengcheng_方鹏程 | 菜鸟二级 | 园豆:206
提问于:2019-04-26 16:09
< >
分享
最佳答案
0

当你输入一句回车之后,scan.hasNext()肯定是为true,所以加了if没什么用

收获园豆:5
五柳先生柳三变 | 菜鸟二级 |园豆:215 | 2019-04-29 11:31

那代码冗余,w3c这样写的,

fangpengcheng_方鹏程 | 园豆:206 (菜鸟二级) | 2019-05-04 00:30
其他回答(4)
0

需要打印出来,不然显示器上没有显示

守夜人123 | 园豆:120 (初学一级) | 2019-04-27 10:22

这不是while循环!那代码冗余,w3c这样写的,代码质量不行

支持(0) 反对(0) fangpengcheng_方鹏程 | 园豆:206 (菜鸟二级) | 2019-05-04 00:31
0

看一下Scanner的hasNext()方法源码

public boolean hasNext() {
ensureOpen();
saveState();
while (!sourceClosed) {
if (hasTokenInBuffer())
return revertState(true);
readInput();
}

boolean result = hasTokenInBuffer();
return revertState(result);
}

 

while循环里面的readInput()控制着sourceClosed变量,当读取结束后,sourceClosed=true,

所以第二次调用的时候sourceClosed=true,就不会进入循环了,就不会进行输入了。

狼爷 | 园豆:1204 (小虾三级) | 2019-04-28 21:23

这不是while循环!那代码冗余,w3c这样写的,代码质量不行

支持(0) 反对(0) fangpengcheng_方鹏程 | 园豆:206 (菜鸟二级) | 2019-05-04 00:31
0

你这样写是没什么区别,输入一次后程序就退出了,但有时候希望一直从键盘输入信息,这时候你把if改成while,区别就出来了,当是while的时候你必须得加。

无恨之都 | 园豆:287 (菜鸟二级) | 2019-04-29 09:17

这不是while循环!那代码冗余,w3c这样写的,代码质量不行

支持(0) 反对(0) fangpengcheng_方鹏程 | 园豆:206 (菜鸟二级) | 2019-05-04 00:31
0

Scanner是阻塞对象一直阻塞知道接受到信息才往下走,hasnext是判断是否有下次请求一般在while()下判断,你这个又没循环那个if没意义

Jachs | 园豆:264 (菜鸟二级) | 2019-07-04 10:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册