2016-12-22 31 views
-2

雖然聽起來很愚蠢的風險,這裏,我去:如何驗證是否鍵盤輸入被賦予

誰能告訴我如何驗證一個字符串是通過掃描儀輸入的?

我在下面寫了一些代碼,但我卡住了。你可能會注意到,我是一個完整的新手。

import static java.lang.System.in; 
import static java.lang.System.out; 

import java.util.Scanner; 


public class Test { 

    public static void main(String args[]) { 
     Scanner keyboard = new Scanner(in); 
     char reply; 

     do { 
      System.out.print("Nieuwe klant? (j/n)"); 
      reply = keyboard.findWithinHorizon(".", 0).charAt(0); 
     } while (reply != 'j' && reply != 'n'); 

     String giveFirstName; 
     String giveLastName; 
     String giveStreet; 
     String giveNumber; 
     String giveCity; 
     String giveLand; 
     String giveMail; 
     String giveGsm; 
     String enterLastName; 
     String enterFirstName; 

     if (reply == 'j') { 

      System.out.print("Voornaam Klant: "); 
      giveFirstName = keyboard.next(); 
      System.out.print("Achternaam Klant: "); 
      giveLastName = keyboard.next(); 
      System.out.print("Straatnaam: "); 
      giveStreet = keyboard.next(); 
      System.out.print("nummer: "); 
      giveNumber = keyboard.next(); 
      System.out.print("Stad: "); 
      giveCity = keyboard.next(); 
      System.out.print("Land: "); 
      giveLand = keyboard.next(); 
      System.out.print("E-mail adress: "); 
      giveMail = keyboard.next(); 
      System.out.print("Gsm-nummer: "); 
      giveGsm = keyboard.next(); 


     } else { 
      out.print("Voornaam bestaande klant:"); 
      enterFirstName = keyboard.next(); 
      System.out.print("Achternaam bestaande klant:"); 
      enterLastName = keyboard.next(); 
     } 
    } 
} 
+1

你是什麼意思「驗證是否輸入了字符串」?只要用戶不輸入任何內容,掃描儀就不會返回任何內容,如果這就是你的意思。 – Paul

+1

驗證是實際上繼續執行某些操作的代碼,因爲'Scanner#next()'確實等待輸入(但是如果有超過1個由下一個標記標識的值, case'Input1 Input2')。 – SomeJavaGuy

+0

好保羅,我的意圖是檢查用戶是否在繼續該程序之前給出了輸入 –

回答

0

深受這是怎麼回事...... 「誰能告訴我如何驗證一個字符串是否是真正進入掃描儀?」 和您的評論... 「這是我的意圖,以檢查用戶是否給定的輸入之前,我繼續運行程序」

如果您只是想檢查用戶提供的輸入,然後你不」不需要做任何事情。這是因爲Scanner.next()方法是一種阻塞方法。

來自APi文檔... 「此方法可能會在等待輸入掃描時阻止。」

什麼是阻塞方法? Java中的阻塞方法是那些停止正在執行的線程直到它們的操作完成的方法。

因此,.next()方法通過在用戶輸入輸入之前停止運行(阻塞)其他代碼來處理此輸入驗證。

瞭解更多:http://javarevisited.blogspot.com/2012/02/what-is-blocking-methods-in-java-and.html#ixzz4TZjxJ8Ri

0

在你的代碼有

do { 
    System.out.print("Nieuwe klant? (j/n)"); 
    reply = keyboard.findWithinHorizon(".", 0).charAt(0); 
} while (reply != 'j' && reply != 'n'); 

雖然我不知道什麼是.findWithinHorizon(".",0),這裏是另一種方式來讀取一個字符。 從這個

do { 
    System.out.print("Nieuwe klant? (j/n)"); 
    reply = keyboard.findWithinHorizon(".", 0).charAt(0); 
} while (reply != 'j' && reply != 'n'); 

更改while循環您做這個

do { 
    String input; 
    System.out.print("Nieuwe klant? (j/n)"); 
    input = keyboard.next(); //Gets next String 
    reply=input.charAt(0); //Sets String input to char reply 
} while (reply != 'j' && reply != 'n'); 

會讀一個字符。我希望這有幫助!

相關問題