2016-10-03 59 views
0
Scanner input = new Scanner(System.in); 
Scanner input2 = new Scanner(System.in); 

System.out.println("Please enter a string: "); 
String a = input.next(); 

System.out.println("Please enter another string: "); 
String b = input2.next(); 

int s1 = a.length(); 
int s2 = b.length(); 
int i; 

if(a.equalsIgnoreCase(b)){ 
    System.out.println(a.substring(i = 0, i + s2)); 
} 

我試圖比較由用戶輸入的2個字符串。字符串比較工作正常,但是,當我輸入一個字符串像 「我喜歡狗」時,它將字符串長度計爲1而不是11,因爲「i」和「like」之間有空格。爲什麼程序不在第一個空格之後計算空格或剩餘字符?Java:包括找到字符串長度時的空格

+0

使用'input.nextLine()的波紋管代碼;'' –

+0

input.next()'獲取的下一個完整標記,通過分隔空間。 – Li357

回答

1

next()方法,如果它從指定字符串構造的模式匹配返回下一個標記。

nextLine()方法將此掃描器推進到當前行並返回跳過的輸入。

如果沒有可以使用java.io包

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
System.out.println("Enter a string"); 
String s = br.readLine(); 
System.out.println(s.length()); 
0

使用input.next()時,空白被視爲分隔符,用於分隔掃描程序接受的標記。所以當掃描器讀入「我喜歡狗」的句子時,它會發現3個單獨的令牌由空白分隔。你可以指定使用掃描器類的useDelimiter方法定界符如

scanner scan = new Scanner(input).useDelimiter(insert parameters here); 

或只是使用的是,在整個線作爲接受令牌讀取input.nextLine()方法。

String b = input.nextLine();