Java 检测来自标准输入的空输入

Java 检测来自标准输入的空输入,java,io,java.util.scanner,stdin,Java,Io,Java.util.scanner,Stdin,我试图检测标准输入的一行是否为空,我不知所措。下面是我一直在尝试使用的代码,但它没有检测行何时为null和/或是否只有空格。谁能帮我看看我做错了什么 public static String scanPrint(Scanner stdinSP) { String wordSP = null; while (stdinSP.hasNext()) { wordSP = stdinSP.next(); wordSP.trim(); if

我试图检测标准输入的一行是否为空,我不知所措。下面是我一直在尝试使用的代码,但它没有检测行何时为null和/或是否只有空格。谁能帮我看看我做错了什么

public static String scanPrint(Scanner stdinSP) {
    String wordSP = null;
    while (stdinSP.hasNext()) {
        wordSP = stdinSP.next();
        wordSP.trim();
        if (wordSP.length() == 0) {
            out.println("fail");
            break;
        } else {
            out.println("success");
            break;              
        }
    }

    out.println(wordSP); //debug
    return wordSP;
}
我只能使用以下导入语句:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Scanner;
import static java.lang.Integer.*;
import static java.lang.String.*;
import static java.lang.System.*;
注意:主方法中有一个工作扫描仪。

更改:

wordSP.trim(); 
致:

完整代码:

 public static String scanPrint( )
 {
        Scanner stdinSP = new Scanner(System.in);
        String wordSP = null;

        while(true)
        {

            if((wordSP = stdinSP.nextLine().trim()).length() == 0)
            {
                System.out.println("fail");
                break;
            }
            else
            {
                System.out.println("success");
                break;
            }
        }
        System.out.println(wordSP); //debug
        return wordSP;
    }
更改:

wordSP.trim(); 
致:

完整代码:

 public static String scanPrint( )
 {
        Scanner stdinSP = new Scanner(System.in);
        String wordSP = null;

        while(true)
        {

            if((wordSP = stdinSP.nextLine().trim()).length() == 0)
            {
                System.out.println("fail");
                break;
            }
            else
            {
                System.out.println("success");
                break;
            }
        }
        System.out.println(wordSP); //debug
        return wordSP;
    }

wordSP.trim()=>
wordSP=wordSP.trim()
您可以将
while
替换为
if
并删除
break
语句@alfasin-你应该把它作为一个答案发布。
wordSP.trim()=>
wordSP=wordSP.trim()
您可以将
while
替换为
if
并删除
break
语句@alfasin-您应该将其作为答案发布。我刚刚尝试了这个,但它没有改变输出的任何内容。@user2967087将调试打印移到开头:
out.println(wordSP)我把它移到了开头,但它似乎什么都没做。我进入一个空间,什么也没发生,它只是移动到下一行。当我输入一个有效的条目时,它会按预期工作。@user2967087听起来像是按预期工作-你期望它做什么?它没有工作。当我输入正确的输入时,当它被认为是“成功”时,它返回为“失败”,然后当有一个空间时,它不做任何事情,而是继续执行程序。我只是尝试了一下,但它没有改变输出。@user2967087将调试打印移到开头:
out.println(wordSP)
我将它移到了开头,但它似乎没有任何作用。我输入了一个空格,但什么也没有发生,它只是移到了下一行。当我输入一个有效的条目时,它按预期工作。@user2967087听起来像它应该工作的样子-你期望它做什么?它没有工作。当我输入正确的输入时,它返回为当它被认为是“成功”时,“失败”,然后当有一个空间时,它什么也不做,而是继续程序,因为它已经存在了。