2016-06-12 63 views
0

我試圖找到用戶輸入的任何字符串的長度。但是,由於某些原因,.length()方法只能找到第一個單詞的長度,然後停止。如何獲取用戶輸入的長度?

因此,我決定用「_」替換所有空格,然後查找長度。由於某些原因,.length()方法仍然只能找到第一個單詞的長度。我知道我可以將字符串的每個單詞放入一個數組中,然後獨立地找到它們的長度,但是必須有一種更有效的方法來完成它。

我看了很多其他的答案。 userInput.replace(「\ s」,「」);或userInput.replace(「」,「」);根本不適合我;它產生與以前完全相同的結果。如何在不使用數組的情況下找到字符串的長度?

package com.skulr.challenge; 
import com.skulr.challenge.Menu; 


public class Challenge11 { 

    static String userInput; 
    static int count0; 

    static int i = 0; 

    public static void method1() { 

     System.out.println("Input a message and we will\ncalculate it's length\n"); 
     System.out.print("- "); 

     userInput = Menu.menuScanner.next(); 

     userInput = userInput.replace("\\s","_"); 
     System.out.println(userInput); 
     count0 = userInput.length(); 


     System.out.println("Your string is: " + count0 + " characters long."); 

    } 

} 
+3

閱讀Scanner的javadoc。它有什麼作用?令牌的定義是什麼?它的next()方法有什麼作用?然後閱讀nextLine()方法的javadoc。另外,學會使用調試器,或至少打印變量的值。 userInput不是你認爲的那樣。 String.length()顯然會做它的文檔所說的。否則,這將是一個巨大的錯誤,並且它會被固定很長時間。當某些事情不能按預期工作時,在您的代碼中有99.9999999%的機會成爲bug,而不是在標準庫中。 –

+2

我在想你只是檢索用戶輸入的第一個單詞,問題不在於它檢索用戶輸入的方式。 – TheBakker

回答

-3
public static void main (String[] args) throws java.lang.Exception 
{ 
    Scanner inputStream = new Scanner(System.in); 

    String userString = inputStream.nextLine(); 
    System.out.println(userString.length()); 
} 
+4

提供意見。每個人都在這裏學習,而不是複製和粘貼。 –

+0

謝謝,我看到我在這裏做了什麼錯了,謝謝你和以前的海報。 – BaphOfWonder

1

掃描儀所使用以獲得令牌(某些deliminator分割字符串,默認爲空格)字符串處理。

如果使用nextLine()更改next()方法,則它將返回整個沒有標記的行。

嘗試。

userInput = Menu.menuScanner.nextLine(); count0 = userInput.length(); System.out.println(「你的字符串是:」+ count0 +「字符長。」);

OR

掃描儀SC = Menu.menuScanner.useDelimiter( 「\ n」); userInput = Menu.menuScanner.next(); count0 = userInput.length(); System.out.println(「你的字符串是:」+ count0 +「字符長。」);