2016-06-12 2 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

스캐너의 javadoc을 읽으십시오. 그것은 무엇을합니까? 토큰의 정의는 무엇입니까? next() 메서드는 무엇을합니까? 그런 다음 nextLine() 메서드의 javadoc을 읽습니다. 또한 디버거를 사용하거나 적어도 변수 값을 인쇄하는 방법을 배우십시오. userInput은 여러분이 생각하는 것과 다릅니다. String.length()는 분명히 문서에서 말하는 것과 같습니다. 그렇지 않으면 커다란 버그가 될 것이고 오랫동안 수정되었을 것입니다. 무언가가 예상대로 작동하지 않으면 표준 라이브러리가 아닌 코드에서 99.9999999 %의 버그가 발생할 가능성이 있습니다. –

+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 + "자입니다.");

관련 문제