为什么java scanner第一次任何一个非nextLine()方法,第二次调用nextLine()则不执行
Scannerin=newScanner(System.in);doublecount=in.nextInt();Stringtoken=in.nextLine();这样...
Scanner in = new Scanner(System.in);
double count=in.nextInt();
String token=in.nextLine();
这样只会就不能继续输入 展开
double count=in.nextInt();
String token=in.nextLine();
这样只会就不能继续输入 展开
展开全部
nextInt() 接收一个整型字符,不会读取\n,nextline()读入一行文本,会读入"\n"字符,但"\n"并不会成为返回的字符
串值的一部分
比如
int n = in.nextInt()
String s1 = in.nextLine();
String s2 = in.nextLine();
假设输入:
123
test1
test2
在这种情况下,n的值为123,s1设置为空白字符,s2设置为test2因为nextInt()读入123,但并没有读入"\n",因此S1调用123所在行的剩余部分
结合不同的方法从键盘读取字符输入时,有时不得不包含一条额外的nextLine()调用,以去除行的结束符。
希望我的回答可以帮助你的理解
串值的一部分
比如
int n = in.nextInt()
String s1 = in.nextLine();
String s2 = in.nextLine();
假设输入:
123
test1
test2
在这种情况下,n的值为123,s1设置为空白字符,s2设置为test2因为nextInt()读入123,但并没有读入"\n",因此S1调用123所在行的剩余部分
结合不同的方法从键盘读取字符输入时,有时不得不包含一条额外的nextLine()调用,以去除行的结束符。
希望我的回答可以帮助你的理解
展开全部
因为你只在初始化Scanner对象的时候执行了一次System.in
所以第二次执行nextLine()的时候就出错了,因为次对象只收到了一次System.in传来的值
所以第二次执行nextLine()的时候就出错了,因为次对象只收到了一次System.in传来的值
追问
可是我第二次不调用用in.nextLine()而是其他,就可以继续输入怎么解释呢
追答
new Scanner(System.in); 初始化这个Scanner对象的时候,
会开启一个自动等待输入的线程,只要不是连续执行in.nextLine();都会等待下一次输入。
但是在同级别的代码块中是用了两次就会出错,提示取不到数据。
如果想实现连续输入请参照下面的代码:
import java.util.Scanner;
public class Demo{
public static void main(String [] args){
Scanner s = new Scanner(System.in);
String t = "";
do{
t = ""+s.nextLine();
System.out.println("您输入的是:"+t);
}while(!t.equals("exit"));
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
初始化只执行一次
想要多次输入,就加个while 之类的,什么判断次数啥的。
只有你想不到没有实现不了。
想要多次输入,就加个while 之类的,什么判断次数啥的。
只有你想不到没有实现不了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询