2015-01-03 5 views
0

나는 약 50 개의 핵심 단어를 검색하고자하는 수천 개의 한 줄짜리 문장으로 된 ArrayList를 가지고있다. 이 핵심 단어 중 하나가 포함되어 있으면 해당 키워드에 해당하는 double을 배열에 추가해야합니다. 모든 배열의 일치가 검사되면 배열의 합계를 합산하려고합니다.많은 if 문을 객체로 결합 할 수 있습니까?

은 현재 내가있는 ArrayList를 두 번 변수 목록을 제외하고이 비슷한이 훨씬 더 큰 :

import java.util.ArrayList; 

public class searchArrayList { 

public static void main(String[] args){ 


String subject2 = "The color of the ball is blue."; 
String subject3 = "The building is white."; 
String subject4 = "Red is my favorite color."; 
String subject5 = "Black and blue are the team colors"; 



    ArrayList<Double> arrlist = new ArrayList<Double>(); 
    ArrayList<Double> difflist = new ArrayList<Double>(); 

    double Black = 10.1; 
    double Blue = 1.6; 
    double Red = 11.4; 
    double White = 4.3; 

    String[] subjectArray = {subject2,subject3,subject4,subject5}; 

    for (String subjects: subjectArray) 
    { 
     if (subjects.toUpperCase().contains("BLUE")); 
     System.out.println(Blue+ "Blue "); 
     arrlist.add(Blue); 
     if (subjects.toUpperCase().contains("BLACK")); 
     System.out.println(Black+" Black"); 
     arrlist.add(Black); 
     if (subjects.toUpperCase().contains("WHITE")); 
     System.out.println(White+" White"); 
     arrlist.add(White); 
     if (subjects.toUpperCase().contains("RED")); 
     System.out.println(Red+" Red"); 
     arrlist.add(Red); 
    } 
    System.out.println(sum(arrlist)); 
} 

public static double sum(ArrayList<Double>arrlist) 
{ 
    double result = 0; 
    for (double number:arrlist) 
    result += number; 
    return result; 
    } 


    } 

이 내가 그것을 할 필요 않지만, 더 이상의 직관적 인 방법이 있는지 궁금 해서요 이것을하기 위해? if 문을 단일 객체/클래스에 결합한 다음 해당 클래스를 호출하여 배열을 검색 할 수 있습니까? switch 문을 사용하는 것이 더 좋을까요? 나는 검색을하기 위해 정규식을 시도했지만 .contains도 잘 작동하는 것 같다. 코멘트를 남기시려면

public class Keyword { 
    private String value; 
    private double points; 

    ... 
} 

private Keyword[] keywords = new Keyword[] { 
    new Keyword("BLUE", 1.6), 
    new Keyword("BLACK", 10.1), 
    ... 
} 

for (String subject : subjectArray) { 
    for (Keyword keyword : keywords) { 
     if (subject.toUpperCase().contains(keyword.getValue())) { 
      System.out.println(keyword.getPoints() + " " + keyword.getValue()); 
      arrlist.add(keyword.getPoints()); 
     } 
    } 
} 
+1

당신은 스위치의 경우와 동일 달성 할 수는 솔루션 확인을 보인다. 그러나, 더 좋은 단어가있을 수 있습니다 ... –

+1

첫째, 배열에서 검색하는 모든 단어를 이동하는 것이 좋습니다. 그런 다음 각 단어의 수를 얻기 위해 double [] [] array를 사용하여 관련 값을 저장할 수 있습니다. 또는 해시 맵. –

+0

Orest와 동의하십시오. 검색 단어를 배열에 넣으면 if 문 없이도이 작업을 수행 할 수 있습니다. –

답변

0

내가 충분히 명성을 가지고 있지 않습니다,하지만이 것 :

관련 문제