2016-10-28 5 views
0

용어 x 용어 매트릭스를 계산해야하는 매우 오랜 시간 동안 문제가 발생했습니다. 그래서, 키워드문장 아래은 2 개 배열이 있습니다계산 용어 x 용어 매트릭스

String[] Keywords = {"Human", "Machine", "Interface", "Application" }; 
String[] Sentence = {"Human is Machine", "Interface of Robot", "Application on Human"}; 

다음, 나는 아래 그림과 같이를 집계해야합니다.

Result in 2D array

논리 : 행과 열이 동일한 키워드의 경우

  1. 우리는 0을 넣어.
  2. 인간 (행) x 기계 (열) 공간에서이 두 문자가 동일한 문장에 한 번 나타나서 (즉, 배열의 첫 번째 문장 ) 1을 넣습니다.
  3. 인간 (행) x 인터페이스 (열)에서이 두 단어 인 이 문장에 함께 존재하지 않기 때문에 0을 넣습니다.
  4. 대/소문자를 구분하지 않습니다.
  5. 다음 열로 이동 한 후 다음 행으로 이동하십시오.

이것은 시도했지만 어쨌든 뭔가 잘못되었습니다.

public class Test { 

    public static int [][] matrix; 

    public static void main(String[] args) throws Exception { 

     String[] Keywords = {"Human", "Machine", "Interface", "Application" }; 
     String[] Sentence = {"Human is Machine", "Interface of Robot", "Application on Human"}; 

     int [][] matrix = new int[Keywords.length][Keywords.length]; //initialize matrix 

      System.out.println(Arrays.toString(Keywords)); 
      System.out.println("\n"+ Arrays.toString(Sentence)); 



      for (int i=0;i<Keywords.length;i++) 
      { 
       int count = 0; 
       for (int q=1;q<Sentence.length;q++) 
       { 
        if (Keywords[i].contains(Sentence[q])) 
        { 
         matrix[i][q] = count++; 
        } 
       } 
      } 

      System.out.println(Arrays.deepToString(matrix)); 




    } 
} 

도움을 주시면 감사하겠습니다. 감사!

답변

3

for 루프에 몇 가지 논리 오류가 있습니다.
if (Keywords[i].contains(Sentence[q]))을 사용하면 키워드에 문장이 포함되어 있는지 여부를 확인할 수 있습니다.
또 다른 것은 여러분의 행렬이 Keywords을 기반으로하고 있으며 아직 행을 나타 내기 위해 Sentence 반복자를 사용하고 있다는 것입니다.
올바른 코드는

for (int i=0;i<Keywords.length-1;i++){ 
    for(int j = i+1; j < Keywords.length; j++){ 
     int count = 0; 
     for (int q=0;q<Sentence.length;q++){ 
      if(Sentence[q].contains(Keywords[i]) && Sentence[q].contains(Keywords[j])){ 
       count++; 
      } 
     } 
     matrix[i][j] = count; 
     matrix[j][i] = count;   
    } 
} 

이 출력됩니다 귀하의 예제 매트릭스 것이다. 문장이 키워드에 포함되어 있는지 여부를

if (Keywords[i].contains(Sentence[q])) 

이 조건 검사 :

0

여러 프로그램에 실수가 있습니다. 반대쪽을 확인하고 싶습니다.

matrix[i][q] = count++; 

왜 이것을 사용합니까? 일치하는 항목이 있으면 셀 값을 1로 설정하려고합니다. 간단하게 대신도 작동하지 않는 복잡한 표현을 사용하는 값을 1로 설정 : 일반적으로

matrix[i][q] = 1; 

을 :
를 디버거를 제공해야 사용 무엇이든 IDE. 그것을 사용하는 방법을 배우십시오; 더 큰 규모로 작업 코드를 작성하려면이 방법을 피할 방법이 없습니다.