2016-04-26 50 views
1

我已經完成了一個簡單的程序,該程序允許用戶輸入名稱,然後向他打招呼。僅使用字母和空格但不包含空格字符串的Java掃描程序

import java.util.Scanner; 
public class nameinput { 
    public static void main(String args[]){ 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter a name: (only letters, at least 2 characters long)"); 
     while (true) { 
      String name= sc.next(); 
      if (name.length() < 2){ 
       System.out.println("This name is too short!"); 
       continue; 
      } 
      else if (!name.matches("[a-zA-Z]+")){ 
       System.out.println("Letters only!"); 
       continue; 
      } 
      else { 
       System.out.println("Hello, " + name); 
       break; 
      } 
     } 
    } 
} 

但是我有兩個問題,我解決不了:

  1. 當用戶輸入包含空格的名字,它只是變得空間之前有什麼。
  2. 當用戶只通過一系列空格或者沒有通過任何內容時,沒有任何反應,就像他沒有輸入任何內容。我會讓用戶收到一條正確的消息,通知他只有空格字符串和空字符串是不允許的。

我希望我對問題的描述很清楚,在此先感謝您的幫助!

+0

'Scanner'是否有分隔符?默認情況下是什麼? – Savior

+1

您需要使用nextLine()以獲取包含空格(超過1個單詞)的掃描器輸入// String name = sc.nextLine(); – laish138

回答

4

如果您只是將sc.next替換爲sc.nextLine()。 nextLine將捕獲所有按鍵,直到按下Enter鍵。

+0

'sc.next()'讀取下一個單詞。如果你只有空格或換行符,這些將被消耗,直到它到達下一個字+1 –

+0

謝謝!這有幫助,但也產生了另一個問題: 當用戶鍵入一個包含空格的名稱時,空間被視爲一個非字母。爲了避免這種情況,我應該改變'!name.matches(「[a-zA-Z] +」)? –

+0

如果我進入'Deendayal',你期待什麼?字符串後有空格。 –

1
import java.util.Scanner; 
public class nameinput { 
    public static void main(String args[]){ 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter a name: (only letters, at least 2 characters long)"); 
     while (true) { 
      String name= sc.nextLine(); 
      if (name.length() < 2){ 
       System.out.println("This name is too short!"); 
       continue; 
      } 
      else if (!name.matches("[a-zA-Z]+")){ 
       System.out.println("Letters only!"); 
       continue; 
      } 
      else { 
       System.out.println("Hello, " + name); 
       break; 
      } 
     } 
    } 
} 
相關問題