.................java 里nextString() 的小问题

importjava.util.Scanner;publicclassFaint{publicstaticvoidmain(Stringargs[]){Scannerin... import java.util.Scanner;

public class Faint
{
public static void main( String args[] )
{

Scanner input = new Scanner( System.in );

//String why = input.nextLine(); // 第 1 行
//System.out.println( why ); // 第 2 行

int a = input.nextInt(); // 第 3 行
System.out.println( a ); // 第 4 行

String why = input.nextLine(); // 第 5 行
System.out.println( why ); // 第 6 行

}

}

以上程序的 第5 第6 行 为什么没有提示 输入???

如果把 第5 第6 行内容 放到 第1 第2 行就会提示输入

这是为什么?????不明白

谢谢解答
我试过了,这样可以

不过能说道详细点么?原理是什么?

谢谢

"你想输入两次,所以需要读两次了"

那为什么 输入int的话不用 读2次那?
展开
 我来答
白嘉黑
推荐于2018-04-10 · TA获得超过243个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:237万
展开全部
在4行和5行间加上
input = new Scanner(System.in);
就可以了!

注意输入类型
目前顺序下 要求第一次输入为int数第二次为String,第一次输入别的类型例如字符 a 会报错!
-------
也许我没说明白哈。
代码是这样的时候:
public class Faint
{
public static void main( String args[] )
{
Scanner input = new Scanner( System.in );

int a = input.nextInt(); // 第 3 行
System.out.println( a ); // 第 4 行

String why = input.nextLine(); // 第 5 行
System.out.println( why ); // 第 6 行
}
}

你是不是运行后会在输入区输入一个int先
例如: 1
你然后按了回车就是
1
1(这时候鼠标在这行)
然后你是不是又按了回车?
那么你的按键就是 1 回车 回车
那么第5行的input.nextLine()其实读的是两回车之间的也就是空字符串。

你的代码可以这样写
public class Faint
{
public static void main( String args[] )
{
Scanner input = new Scanner( System.in );

int a = input.nextInt(); // 第 3 行
System.out.println( a ); // 第 4 行

input.nextLine(); //Add

String why = input.nextLine(); // 第 5 行
System.out.println( why ); // 第 6 行
}
}
或者你别多按回车就是了

========
哦!怕你又误会!再解释
你用的是nextLine(),也就是读一行所以特殊。它以行分割符做结束,也就是回车符
而nextInt()不一样了
当如上述代码一样,第一是nextInt(),你是不是发现,按多少次回车后再输入1,它都会打印1巴

所以你不要用nextLine()用next()最方便了~哈哈,忘了最先告诉你!
百度网友059c34a
2018-07-16
知道答主
回答量:2
采纳率:0%
帮助的人:1719
展开全部
我刚学到这里,卡了1个多小时,不知道理解的对不对
Scanner sc = new Scanner(System.in);
String s1 = sc.nextline();//1
String s2 = Sc.nextline();//2
System.out.println("s1="+ s1 + "s2=" + s2);//3
System.out.println("-------------------")
int s3 = sc.nextInt();//4
String s4 = sc.nextline();//5
System.out.println("s3=" + s3 + "s4=" + s4);//6
/*123的操作是输入(hello + 空格 + world + 空格)得到helloworld,是因为nextline以空格键为结束符号,而345操作(1 + 空格)直接显示了1而结束了字符串的输入,是因为输入1用的是nextInt(),它是以收到有效的数据才结束,当你连续输入1和空格时,nextInt把空格前的1给提取走了,(注意1和空格键之间是空的但是是空字符串)而在其后的nextline()把空格键前截至到1中间的空字符给误会的吸走了。*/
//刚看了下日期可能对你已经没帮助了-_-!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式