我们知道下面的两种语句都可以输入字符串
<span style="font-size:14px;">Scanner sc = new Scanner(System.in);
String s1 = sc.next();
String s2 = sc.nextLine();</span>
那么两者之间有什么区别呢???
如果我们想要输入带空格的字符串时,
1.使用next()时,next()扫描字符串时,当扫描到空格或换行时,就会终止,只会保留空格前面的数据,也就是说next()无法输入带空格的字符串
2.使用nextLine时则会输入的有空格,但是也是有一个不好的情况,比如我想输入两条带空格的数据
如图所示只能输入一句。。。
下面有一道题
-
描述
-
第一行是一个整数N(N<10)表示测试数据的组数)
每组测试数据占一行,每行数据中间有且只有一个空格(这样你可以把此行当成两个字符串读取)。
每行字符长度不超过40
并且保证输入的字符只有空格(1个),数字,小写字母三种 - 对应每行测试数据,逆序输出(空格和数字不输出)
输入
输出
题目中已经要求输入的字符只有一个空格,并且输出时不包含空格,数字
因此我们可以使用两个next()语句,因为要求输出时没有空格,所以可以使用next,之所以要使用两个next()是因为当输入一个含空格的字符串时,第一个next()是空格前的字符串,第二个next()是空格后的字符串,正好题目中要求有一个空格,因此两个next()正合适
由于只输出小写字母,因此只要满足小写字母就把他们拼接在StringBuild上,最后结果是一个逆序的数,StringBuild正好有一个逆序的方法,输出即可,具体代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
while (N-- > 0) {
String s1 = sc.next();
String s2 = sc.next();
StringBuilder s = new StringBuilder();
for (int i = 0; i < s1.length(); i++) {
if (s1.charAt(i)>='a' && s1.charAt(i)<='z') {
s.append(s1.charAt(i));
}
}
for (int i = 0; i < s2.length(); i++) {
if (s2.charAt(i)>='a' && s2.charAt(i)<='z') {
s.append(s2.charAt(i));
}
}
System.out.println(s.reverse());
}
}
}