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();
}
}
这个省略和加上没区别啊,大佬解释
当你输入一句回车之后,scan.hasNext()肯定是为true,所以加了if没什么用
那代码冗余,w3c这样写的,
需要打印出来,不然显示器上没有显示
这不是while循环!那代码冗余,w3c这样写的,代码质量不行
看一下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,就不会进入循环了,就不会进行输入了。
这不是while循环!那代码冗余,w3c这样写的,代码质量不行
你这样写是没什么区别,输入一次后程序就退出了,但有时候希望一直从键盘输入信息,这时候你把if改成while,区别就出来了,当是while的时候你必须得加。
这不是while循环!那代码冗余,w3c这样写的,代码质量不行
Scanner是阻塞对象一直阻塞知道接受到信息才往下走,hasnext是判断是否有下次请求一般在while()下判断,你这个又没循环那个if没意义