1、一定要读取到有效字符后才可以结束输入。2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。next()不能得到带有空格的字符串。nextLine():
1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。2、可以获得空白。
综合以上两个方法的特点,第一题中我们使用的while判断中使用hasNext(),否则接收到空白后继续运行却没了输入,系统就会报错:
输入描述:输入第一行包括一个数据组数t(1<=t<=100)接下来每行包括两个正整数a,b(1<=a,b<=1000)输出描述:输出a+b的结果示例1输入例子:2151020输出例子:630这组输入给了测试用例中组数,并告知每组只有2个数字,那么只需先接收组数,循环接收各组即可
importjava.util.Scanner;//注意类名必须为Main,不要有任何packagexxx信息publicclassMain{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);//注意hasNext和hasNextLine的区别intn=in.nextInt();for(inti=0;i importjava.util.Scanner;//注意类名必须为Main,不要有任何packagexxx信息publicclassMain{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);//注意hasNext和hasNextLine的区别while(in.hasNextInt()){//注意while处理多个caseinta=in.nextInt();intb=in.nextInt();if(a==0&b==0){break;}else{System.out.println(a+b);}}}}4. 输入描述:输入数据包括多组。每组数据一行,每行的第一个整数为整数的个数n(1<=n<=100),n为0的时候结束输入。接下来n个正整数,即需要求和的每个正整数。输出描述:每组数据输出求和的结果示例1输入例子:412345123450输出例子:1015第四组的结束与3类似,用一组判断即可,在接收每组数据时,先接收第一个数字,然后使用循环依次接收即可. importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){intn=1,sum=0;Scannerin=newScanner(System.in);while(n!=0){n=in.nextInt();sum=0;for(inti=0;i 输入的第一行包括一个正整数t(1<=t<=100),表示数据组数。接下来t行,每行一组数据。每行的第一个整数为整数的个数n(1<=n<=100)。接下来n个正整数,即需要求和的每个正整数。输出描述:每组数据输出求和的结果示例1输入例子:241234512345输出例子:1015第五题给了行数,给了每组数据的个数,很简单,用2重循环即可. importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);intn1,n2,sum;n1=in.nextInt();for(inti=0;i 输入描述:输入数据有多组,每行表示一组输入数据。每行的第一个整数为整数的个数n(1<=n<=100)。接下来n个正整数,即需要求和的每个正整数。输出描述:每组数据输出求和的结果示例1输入例子:41234512345输出例子:1015第六题不再给出有多少组数据,需要我们使用hasNext()来接收至最后一个数字,在while(hasNext)下接收首数字n,使用for循环进行n次,接受每个数字相加即可. importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){intn,sum;Scannerin=newScanner(System.in);while(in.hasNext()){n=in.nextInt();sum=0;for(inti=0;i 输入描述:输入数据有多组,每行表示一组输入数据。每行不定有n个整数,空格隔开。(1<=n<=100)。输出描述:每组数据输出求和的结果示例1输入例子:1234500000输出例子:690这次的题目中出现了0,如果之前的题目使用0和空来判断的,就会出现问题,但是我们使用hasNext来判断,就避免了这些问题.同时,本题开始,不再给出每组数据的个数,那么我们如何判断每组数据的结束就成为了难点.看了提交大佬的答案,获得了思路,我们直接使用scanner.nextLine(),将一整行的数字以字符串的形式赋值给str,然后将str用空格分隔,赋值给字符串数组. importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);//ArrayList 输入有两行,第一行n第二行是n个字符串,字符串之间用空格隔开输出描述:输出一行排序后的字符串,空格隔开,无结尾空格示例1输入例子:5cdabbe输出例子:abbcde第8题开始,进行到对字符串的排序,在接收每组字符串上,我们仍是用第7题的方法,使用scanner.nextLine()将整行都赋值出去,再用split("")以空格拆分,赋值给字符串数组,也可以赋值给ArrayList importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){intn;Scannerin=newScanner(System.in);n=in.nextInt();ArrayList 输入描述:多个测试用例,每个测试用例一行。每行通过空格隔开,有n个字符,n<100输出描述:对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开示例1输入例子:acbbfddddnowcoder输出例子:abbcddddfnowcoder第9题中,不再给出每组字符的个数,因此仍然需要使用NextLine()将整行赋值出去,再用split分隔后赋值给另一个数组. importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);Stringstr="";//ArrayList 输入描述:多个测试用例,每个测试用例一行。每行通过,隔开,有n个字符,n<100输出描述:对于每组用例输出一行排序后的字符串,用','隔开,无结尾空格示例1输入例子:a,c,bbf,ddddnowcoder输出例子:a,bb,cdddd,fnowcoder第10题的接收数据,排序数据和第九题一样,但是最后的输出需要增加判断,由于以逗号分隔,故未结尾时打印逗号,结尾时打印'\n'即可.