控制台输入字符串next()与nextLine()的区别

我们知道下面的两种语句都可以输入字符串
<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());
		}

	}
}


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值