如何在 JAVA 中输入空字符串 [重复]

Posted

技术标签:

【中文标题】如何在 JAVA 中输入空字符串 [重复]【英文标题】:How to input an Empty string in JAVA [duplicate] 【发布时间】:2020-03-05 09:54:54 【问题描述】:

我的程序应该检查 s 是否为空字符串,如果发现是,它应该打印“空字符串”并提示输入新的输入。但是我每次第一次运行都没有要求 s,打印“空字符串”,然后它运行完美!

Scanner input = new Scanner(System.in);
int t = input.nextInt();
while (t > 0) 
    String s;
    s = input.nextLine();
    if (s.isEmpty()) 
        System.out.println("Empty string");
        s = input.nextLine();
     

如何避免第一个“空字符串”?

PS- 我试过了-

s = input.next();

这解决了问题,但现在它不允许我在程序中输入空字符串!

PPS- 看看这个:

import java.util.*;
import java.lang.*;
import java.io.*;

class ComparePlayers 
    public static void main(String[] args) 
        Scanner input = new Scanner(System.in);
        int t = input.nextInt();
        while (t > 0) 
            String s;
            s = input.nextLine();
            if (s.isEmpty()) 
                System.out.println("Empty String");
                s = input.nextLine();
            
            else 
                System.out.println("Not Empty");
            
            t--;
        
    

您可以看到有 3 个 i/ps,而其中一个 o/ps 被空字符串占用。

【问题讨论】:

这能回答你的问题吗? Scanner is skipping nextLine() after using next() or nextFoo()? 【参考方案1】:

这是因为Scanner.nextInt() 方法不会读取在按下 'Enter' 后生成的 '\n' (new line) 字符在终端输入中写入数字。一个简单的解决方法是使用input.nextLine() 读取'\n' 字符,并在使用Scanner.nextX() 方法(例如nextInt()、nextDouble() 等)后立即忽略它

所以您的代码更改为:

Scanner input = new Scanner(System.in);
int t = input.nextInt(); 
input.nextLine(); // read and ignore extra \n character

while (t > 0) 
    String s;
    s = input.nextLine();
    if (s.isEmpty()) 
        System.out.println("Empty string");
        s = input.nextLine();
     

【讨论】:

【参考方案2】:

这样做是因为input.nextInt(); 不捕获换行符。您可以通过添加 input.nextLine();

来像其他人建议的那样做
Scanner input = new Scanner(System.in);
int t = Integer.parseInt(input.nextLine());
while (t > 0) 
    String s = input.nextLine();
    if (s.isEmpty()) 
        System.out.println("Empty string");
        s = input.nextLine();
    

【讨论】:

以上是关于如何在 JAVA 中输入空字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个空字符串并更新它[重复]

无重复字符的最长字串问题

如何使用scala在Apache spark中用空字符串(“”)替换空值[重复]

出现错误:将空字符串返回到 bool [重复]

leetcode T3 无重复字符的最长子串详解

求字符串的最长无重复字符子串长度