如何在JAVA中输入空字符串

如何在JAVA中输入空字符串,java,string,next,is-empty,Java,String,Next,Is Empty,我的程序应该检查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.print

我的程序应该检查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/p,其中一个o/p被空字符串占用。

这是因为
Scanner.nextInt()
方法不会读取在终端输入中写入数字后按“Enter”键生成的“\n”(新行)字符。一个简单的解决方法是使用
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();
    } 
}

它之所以这样做是因为
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();
    }
}