JAVA 先输入一个数字,先输入2个字符串,输完第一个字符就输出了,第二个字符串无法输入,怎么处理?

String str1,str2;
n=in.nextInt();
str1=in.nextLine();
str2=in.nextLine();
System.out.println(n);
System.out.println("s1"+str1);
System.out.println("s2"+str2);

你说的是在同一行输入2个字符串
那你要用
str1=in.next();
str2=in.next();
这样才能读取
你用nextLine();是读到回车符为止的,将整个一行作为一个字符串赋给String型变量
如果不改的话,你只需要在程序运行的时候将2个字符串分行输入即可
即输入完一个字符串后用回车而不是用空格开始第二个字符串的输入即可追问

一行一个字符串,而且带空格的,in.next();不行

追答

哦,我测试了一下你的代码,我知道你的是什么问题了
你的
n=in.nextInt();取完数据后,int型数据的那行没有结束,最后一个回车符被当做字符串赋给str1了
如果你要的字符串和开始的整数用空格隔开,你就能看出问题了,示例输出:
3 sagjaij 43j ja5
asdfq wqhdj 1123154
3
s1 sagjaij 43j ja5
s2asdfq wqhdj 1123154
我们可以看到,str1就得到值了,跟3是同一行读取的
所以我们只需要
str1=in.nextLine();
str1=in.nextLine();
str2=in.nextLine();
把结尾那个回车符读取掉就行了
运行示例:
3
sdfa as aewa
dzf123 dasf3
3
s1sdfa as aewa
s2dzf123 dasf3

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-19
String str1,str2;
n=in.nextInt();
str1=in.nextLine();
str1=in.nextLine();//将str1重新赋值,用想输入的内容代替原来的回车
str2=in.nextLine();
System.out.println(n);
System.out.println("s1"+str1);
System.out.println("s2"+str2);
第2个回答  2011-09-18
在n=in.nextInt();这句后面加上in = new Scanner(System.in);在Str1那句后面也加这么一句.
一个Scanner对象只控制输入一次吧
相似回答