나는 약 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());
}
}
}
당신은 스위치의 경우와 동일 달성 할 수는 솔루션 확인을 보인다. 그러나, 더 좋은 단어가있을 수 있습니다 ... –
첫째, 배열에서 검색하는 모든 단어를 이동하는 것이 좋습니다. 그런 다음 각 단어의 수를 얻기 위해 double [] [] array를 사용하여 관련 값을 저장할 수 있습니다. 또는 해시 맵. –
Orest와 동의하십시오. 검색 단어를 배열에 넣으면 if 문 없이도이 작업을 수행 할 수 있습니다. –