gpt4 book ai didi

java - 我可以将一堆 if 语句组合成一个对象吗?

转载 作者:行者123 更新时间:2023-12-01 22:31:00 25 4
gpt4 key购买 nike

我有一个包含数千个单行句子的 ArrayList,我想搜索大约 50 个关键词。如果它包含这些关键字之一,我希望它将与该关键字对应的 double 值添加到数组中。检查完所有数组是否匹配后,我想对数组的总数进行求和。

目前我有与此类似的东西,除了数组列表和双变量列表要大得多:

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());
}
}
}

关于java - 我可以将一堆 if 语句组合成一个对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27758742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com