a java has occurredNextLine()疑问

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)16:18 提问
javahasNextLine()的终止条件
private static ArrayList&Integer[]& inputMatirx() {
ArrayList&Integer[]& matrix = new ArrayList&&();
Scanner in = new Scanner(System.in);
System.out.println("Please input the matrix.");
while (in.hasNextLine()) {
String[] row = in.nextLine().split(" ");
Integer[] r = new Integer[row.length];
for (int i = 0; i & row. i++) {
r[i] = Integer.parseInt(row[i]);
matrix.add(r);
in.close();
System.out.println("Input end.");
我想通过这个方法输入一个矩阵
但是每次输到最后一行按两次回车想结束输入时,会报错,请问如何解决?
按赞数排序
可以加个结束条件啊,比如输入0时,跳出循环就好了
类型转换异常,parseInt,把空字符串转成int是不允许的
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐java中Scanner类nextLine和next的区别和使用方法_百度知道
java中Scanner类nextLine和next的区别和使用方法
我有更好的答案
在Java实现字符窗口的输入时,很多人更喜欢选择使用扫描器Scanner,它操作起来比较简单。在编程的过程中,我发现用Scanner实现字符串的输入有两种方法,一种是next(),另一种是nextLine(),这两种有以下区别:next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。&简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。下面介绍使用方法的例子:import&port&java.util.S &public&class&NextTest{&&&&&&public&static&void&main(String[]&args)&{&&&&&&&&&&String&s1,s2;&&&&&&&&&&Scanner&sc=new&Scanner(System.in);&&&&&&&&&&System.out.print(&请输入第一个字符串:&);&&&&&&&&&&s1=sc.nextLine();&&&&&&&&&&System.out.print(&请输入第二个字符串:&);&&&&&&&&&&s2=sc.next();&&&&&&&&&&System.out.println(&输入的字符串是:&+s1+&&&+s2);&&&&&&}&&} &运行结果:请输入第一个字符串:Hello请输入第二个字符串:World输入的字符串是:Hello&World把程序改一下:import&port&java.util.S &public&class&NextTest{&&&&&&public&static&void&main(String[]&args)&{&&&&&&&&&&String&s1,s2;&&&&&&&&&&Scanner&sc=new&Scanner(System.in);&&&&&&&&&&System.out.print(&请输入第一个字符串:&);&&&&&&&&&&s1=sc.next(); &&&&&&&&&System.out.print(&请输入第二个字符串:&);&&&&&&&&&&s2=sc.nextLine(); &&&&&&&&&System.out.println(&输入的字符串是:&+s1+&&&+s2);&&&&&&}&&} &运行结果是:请输入第一个字符串:Hello请输入第二个字符串:输入的字符串是:Hello&可以看到,nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法给s2从键盘输入值。经过验证,我发现其他的next的方法,如double nextDouble() , float nextFloat() , int nextInt() 等与nextLine()连用时都存在这个问题,解决的办法是:在每一个 next()、nextDouble() 、 nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。import&port&java.util.S &public&class&NextTest{&&&&&&public&static&void&main(String[]&args)&{&&&&&&&&&&String&s1,s2;&&&&&&&&&&Scanner&sc=new&Scanner(System.in);&&&&&&&&&&System.out.print(&请输入第一个字符串:&);&&& & & & s1=sc.next(); && & & & sc.nextLine(); &&&&&&&&&System.out.print(&请输入第二个字符串:&);&&&&&&&&&&s2=sc.nextLine(); &&&&&&&&&System.out.println(&输入的字符串是:&+s1+&&&+s2);&&&&&&}&&} &运行结果是:请输入第一个字符串:Hello请输入第二个字符串:World输入的字符串是:Hello&World
采纳率:96%
来自团队:
next();&&&&&&&&&&System, int nextInt() 等与nextLine()连用时都存在这个问题;public&运行结果是:请输入第一个字符串;void&nbsp?&static&);NextTest&&&nbsp.print(&quot,它是可以得到带空格的字符串的。鉴于以上两种方法的只要区别;&nbsp。上面的程序改写为:import&java、Tab键或Enter键等视为分隔符或结束符;&nbsp.nextLine();&&&&&&&&&&S & &args)&{&nbsp.println(&&&}运行结果:请输入第一个字符串;+s2);&&&&&&}&&System.out.print(&请输入第二个字符串:&);&&s2=sc.nextLine();&& next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。&nbsp,一种是next(),一种nextLine(),我发现其他的next的方法,所以没办法给s2从键盘输入值。经过验证;sc.nextLine();work但如果把程序改一下:s1=sc,很多人更喜欢选择使用扫描器Scanner,它操作起来比较简单。在编程的过程中,我发现用Scanner实现字符串的输入有两种方法. 简单地说; & &&&nbsp:home&java.util.&&&nbsp:输入的字符串是; & &class&NextTest{&main(String[]&args)&nbsp:home请输入第二个字符串;&nbsp,一定要注意next()方法和nextLine()方法的连用,解决的办法是:在每一个 next()、nextDouble() 、 nextFloat();&nbsp.util.S&&public&class&&nbsp,但是这两种方法究竟有什么区别呢;请输入第二个字符串;& &&而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符;String&&s1=s2=&&Scanner&sc=new&Scanner(System.print(&+s1+&),举个例子:import&nbsp.S&sc=new&&nbsp,如double nextDouble() ;{&&&&&&&&&&String&s1;&nbsp.in);&&nbsp:home&&&nbsp,next()查找并返回来自此扫描器的下一个完整标记:&&&Scanner(System.in);&&&&&&&&&&System, float nextFloat() ;&&public&nbsp:&quot。& &请输入第一个字符串:work输入的字符串是;&&输入的字符串是.& & & &&nbsp,s2;&&&&&&&&&&Scanner&System.out.print(&请输入第一个字符串:&);&&s1=sc.next();s1,s2;&nbsp、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉.next();&&s2=sc.nextLine():&&在实现字符窗口的输入时;&nbsp,nextLine()自动读取了被next()去掉的Enter作为他的结束符;{&&public&static&void&main(String[]&System.out.println(&输入的字符串是:&+s1+&&&+s2);&&}&&}运行结果是:请输入第一个字符串:home请输入第二个字符串:work输入的字符串是:home&work;&nbsp:home请输入第二个字符串;&&& &&可以看到& & &nbsp
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。import java.io.*;
public class Scans
public static void main(String[] args)throws {
PrintWriter pw=new PrintWriter(new File(&ttttt.txt&));
sc=new Scanner(new File(Scans.class.getResource(&&).getPath()+&rt1.txt&));
//sc.useDelimiter(&\\r*\\n&);
while(sc.hasNext()){
pw.print(sc.nextLine()+&$$$$$$$&);
System.out.println(sc.hasNext());
if(sc.hasNext())pw.print(&\n&);
pw.flush();
//下面是r1.txt
Extraction Rules (HTML/Web)
Target Code
Page Encoding
Query Method
Login Method
Portal Address
:/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0001&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0002&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0004&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0005&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0006&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0007&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0008&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0009&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0010&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0011&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0011&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0012&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0013&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0014&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0015&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0016&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0017&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0018&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0019&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0022&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0023&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0023&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0024&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0025&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0026&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0027&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0029&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0030&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0031&dbcode=CLKM&json=&t=%/~ :/%http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0003&dbcode=CLKM&json=&t=%/~
List Regex
:/%(?#title)(?i)href=&([^&]+)&[^&]*&[^&&]+&/a&&/p&%/~ :/%(?i)setFrame\('([^']+)'\)%/~ :/%[post](?#post)(?#title)(?#accept)(?i)^(?=[\w\W]*?(?:&form[^&]*action=&|&PARENT_URL&:\s*)(?&action&[^&&&\s]*)[&&])(?=[\w\W]*?name=&drpField&[^&]*VALUE=&(?&drpField&[^&]*)&|[\W\w])(?=[\w\W]*?name=&__EVENTVALIDATION&[^&]*VALUE=&(?&__EVENTVALIDATION&[^&]*)&|[\W\w])(?=[\w\W]*?name=&__VIEWSTATE&[^&]*VALUE=&(?&__VIEWSTATE&[^&]*)&|[\W\w])[\w\W]*href=&javascript:KnsPager.go\((?&__CALLBACKPARAM&\d+),'(?&__CALLBACKID&[^']+)'\)& &Next&/a&%/~
Data Regex
:/%(?#title)(?i)href=&([^&]+)&[^&]*&\s*[^&&]+&/a&\s*&/td%/~
Sublink Regex
Metadata Regex
title:/%(?i)href=&[^&]+&[^&]*&\s*([^&&]+)&/a&\s*&/td[^&]*&%/~ author:/%(?i)\【?Author\s*in\s*Chinese\】?(?:&(?!/p)[^&]*&|\s)*&a[^&]*&([^&&]*?)&/a&(\;)(?:(?:&(?!/p)[^&]*&|\s)*&a[^&]*&([^&&]*?)&/a&(\;))?(?:(?:&(?!/p)[^&]*&|\s)*&a[^&]*&([^&&]*?)&/a&)?(?:(?:&(?!/p)[^&]*&|\s)*&a[^&]*&([^&&]*?)&/a&(\;))?(?:(?:&(?!/p)[^&]*&|\s)*&a[^&]*&([^&&]*?)&/a&)?%/~ datepublished:/%(?i)Author\s*information[\w\W]+?(\d{4})%/~ Publisher:/%(?i)href=&[^&]+&[^&]*&([^&&]+)&/a&&/p&%/~
Status:Running
Display top:
List URL -- http://eng.oversea.cnki.net/law/navi/CLKMissue.aspx?dbcode=CLKM&dbPrefix=CLKT&pykm=GGUDU
List URL -- http://eng.oversea.cnki.net/law/navi/CLKMissue.aspx?dbcode=CLKM&dbPrefix=CLKT&pykm=GGZSU
List URL -- size = 2
access : http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0001&dbcode=CLKM&json=&t=
List URL -- http://eng.oversea.cnki.net/law/navi/CLKMissue.aspx?dbcode=CLKM&dbPrefix=CLKT&pykm=GANHU
List URL -- http://eng.oversea.cnki.net/law/navi/CLKMissue.aspx?dbcode=CLKM&dbPrefix=CLKT&pykm=GAHCC
List URL -- size = 2
access : http://eng.oversea.cnki.net/law/navi/clkb_ifmlist.aspx?navitype=area&navi=0002&dbcode=CLKM&json=&t=
©2009, Serials Solutions All rights reserved
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有4757人阅读
Java基础(26)
**两个都是用来接收用户的输入,区别在于:
next()从遇到第一个有效字符(非空格、换行符)开始扫描,遇到第一个分隔符或结束符(空格’ ‘或者换行符 ‘\n’)时结束。 nextLine()则是扫描剩下的所有字符串知道遇到回车为止。**
聪明的你get到了吗?
如果没有,没关系,我们来举个例子,对于如下输入:
Scanner sc = new Scanner(System.in);
//加入输入的是:aaa bbb ccc
str1=sc.next();
//str1="aaa"
str2=sc.nextline();
//str2=" bbb ccc"
解释一下原因
首先对于输入的数据,在计算机中实际表示是这样的,包含三个空格和一个换行符:
bbb ccc \n
netx()函数从遇到的第一个有效的字符a开始扫描,直到遇到第一个空格扫描结束,得到字符串”aaa”
nextLine()函数从空格开始扫描知直到遇到\n符结束,故得到字符串是 ” bbb ccc”,注意这里bbb前面还有一个空格
所以如果要同时使用next和nextLine()时,要慎用,因为联合使用时就是一个整体,next在前,nextLine靠后,扫描接受的是同一行上的字符串,只不过接收的是不同内容罢了。
下面对于sc.nextInt() ,sc.nextDouble等与sc.nextLine()使用时需要注意的问题
import java.util.S
public class Solution {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
double y=sc.nextDouble();
sc.nextLine();
String s= sc.nextLine();
System.out.println("String: "+s);
System.out.println("Double: "+y);
System.out.println("Int: "+x);

我要回帖

更多关于 java is a has a 的文章

 

随机推荐