2015-02-06 2 views
0

이것은 내가 생각할 수있는 전부이며 if 루프에서 잘못되었습니다. 왼쪽 측면은 가변적이어야한다고 말했다. 첫 번째 문자열과 두 번째 문자열에서 모두 나타나는 char을 계산하는 방법은 무엇입니까?어떻게 처음에 문자열이 몇 번 나왔는지 계산할 수 있습니까?

+0

을 당신은 혼란을'='와'==' . 어쨌든 나는이 질문을 몇 가지 방법으로 해석 할 수 있으므로 그것을 분명하게하고 입력과 예상 결과의 예를 포함하여 그러한 결과가 올바른 이유를 설명합니다. – Pshemo

답변

1

if 문에서 = 연산자를 사용하여 할당을 수행하고 있습니다. 두 문자를 비교하려면 비교 연산자를 사용합니다. ==

1

'='연산자가 할당됩니다. '=='연산자는 대부분의 언어에서 비교 연산자 (평등)입니다.

+0

SO FYI와 마찬가지로, 대부분의 키보드에서 물결표 키와 함께 위치한 무덤 악센트를 강조 표시합니다 – Ascalonian

0

먼저이 코드가 어떻게 구현되는지 이해하십시오. 아래 코드는 첫 번째 문자열의 문자를 비교하는 두 번째 문자열의 문자를 계산합니다. 첫 번째 문자열이 두 번 이상 같은 char을 가질 때 이것은 완벽하지 않습니다. 그렇지 않으면

public int count_chars_in_String(String s, String s1){ 
    int count = 0; 
    for(int i = 0; i<s.length();i++){ 
     for(int j = 0,k = 0; j<s1.length();j++){ 
      if(s.charAt(i) == s1.charAt(j)){ 
       k + = 1; 
      } 
     } 
     System.out.println(s.charAt(i)+": "+k+" times"); 
    } 
} 
1

사용 == 또한, 비교 s와 S1의 길이가 같은 당신의 코드에서 확인 .. 그것을 위해 수정을 (또는 당신은 종료로 작은 문자열의 길이를 사용) 함 당신은 얻을 것이다 :

StringIndexOutOfBoundsException 

오류.

0

질문의 몸을 무시 나는이 같은 두 개의 문자열 모두에 표시되는 문자 카운트 것 (이 때 결함이있는) :

public Set<Character> asSet(String s) { 
    Set<Character> in = new HashSet<>(); 
    // Roll all of the strings characters into the set. 
    s.chars().forEach(c -> in.add((char) c)); 
    return in; 
} 

public int countCharsInBoth(String s, String s1) { 
    // All characters in the first string. 
    Set<Character> inBoth = asSet(s); 
    // Keep only those in the second string too. 
    inBoth.retainAll(asSet(s1)); 
    // Size of that set is count. 
    return inBoth.size(); 
} 

public void test() { 
    // Prints 3 as expected. 
    System.out.println(countCharsInBoth("Hello", "Hell")); 
} 
관련 문제