2013-11-08 2 views
1

Я пытаюсь определить, является ли строка из stdin пустой, и я в недоумении. Ниже приведен код, который я пытаюсь использовать, но он не обнаруживает, когда строка равна null и/или если у нее просто пробелы. Кто-нибудь может помочь мне понять, что я делаю неправильно?Обнаружение пустого ввода из stdin

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.*; 

Примечания он имеет рабочий сканер в основном методе.

+2

'wordSP.trim()' => 'wordSP = wordSP.trim(); ' – alfasin

+0

Вы можете заменить' while' на 'if' и избавиться от операторов' break'. @alfasin - вы должны опубликовать это как ответ. –

ответ

1

Изменение:

wordSP.trim(); 

к:

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; 
    } 
+0

Я просто попробовал это, но ничего не изменил с выходом. – user2967087

+0

@ user2967087 переместите отладочную печать в начало: 'out.println (wordSP);' – alfasin

+0

Я переместил ее в начало, но, похоже, ничего не делает. Я ввожу пробел, и ничего не происходит, он просто переходит к следующей линии. Когда я ввожу действительную запись, она работает так, как предполагается. – user2967087

Смежные вопросы