Java if语句
我能把这段代码写得更短吗?我想到了“如果”的说法 也许经过一段时间的循环 用于在数据库中搜索某个客户端的方法。这个方法很有效,但是这个if语句我想写得更短 谢谢 编辑已解决:Java if语句,java,if-statement,Java,If Statement,我能把这段代码写得更短吗?我想到了“如果”的说法 也许经过一段时间的循环 用于在数据库中搜索某个客户端的方法。这个方法很有效,但是这个if语句我想写得更短 谢谢 编辑已解决: public void searchKlijenta(KlijentiFormEvent klijentiFormEvent) throws SQLException { String nazivK = klijentiFormEvent.getNaziv(); String adresaK = klij
public void searchKlijenta(KlijentiFormEvent klijentiFormEvent) throws SQLException {
String nazivK = klijentiFormEvent.getNaziv();
String adresaK = klijentiFormEvent.getAdresa();
String gradK = klijentiFormEvent.getGrad();
String drzavaK = klijentiFormEvent.getDrzava();
String telefonK = klijentiFormEvent.getTelefon();
String faxK = klijentiFormEvent.getFax();
String mailK = klijentiFormEvent.getMail();
String mobitelK = klijentiFormEvent.getMobitel();
String oibK = klijentiFormEvent.getOib();
String ugovorK = klijentiFormEvent.getUgovor();
String osobaK = klijentiFormEvent.getOsoba();
if (nazivK.length() == 0)
nazivK = null;
if (adresaK.length() == 0)
adresaK = null;
if (gradK.length() == 0)
gradK = null;
if (drzavaK.length() == 0)
drzavaK = null;
if (telefonK.length() == 0)
telefonK = null;
if (faxK.length() == 0)
faxK = null;
if (mailK.length() == 0)
mailK = null;
if (mobitelK.length() == 0)
mobitelK = null;
if (oibK.length() == 0)
oibK = null;
if (ugovorK.length() == 0)
ugovorK = null;
if (osobaK.length() == 0)
osobaK = null;
klijentiSearchModel.clear();
String sql = "select * from zavrsni.klijenti where naziv like '"+nazivK+"' or adresa like '"+adresaK+"' or grad like '"+gradK+"' or drzava like '"+drzavaK+"' or telefon like '"+telefonK+"' or fax like '"+faxK+"' or mail like '"+mailK+"' or mobitel like '"+mobitelK+"' or oib like '"+oibK+"' or ugovor like '"+ugovorK+"' or osoba like '"+osobaK+"' ";
Statement selectStmt = con.createStatement();
ResultSet result = selectStmt.executeQuery(sql);
while(result.next()) {
int id = result.getInt("id");
String naziv = result.getString("naziv");
String adresa = result.getString("adresa");
String grad = result.getString("grad");
int posBr = result.getInt("posBr");
String drzava = result.getString("drzava");
String telefon = result.getString("telefon");
String fax = result.getString("fax");
String mail = result.getString("mail");
String mobitel = result.getString("mobitel");
String oib = result.getString("oib");
String ugovor = result.getString("ugovor");
String osoba = result.getString("osoba");
KlijentiModelSearch klijentSearch = new KlijentiModelSearch(id, naziv, adresa, grad, posBr, drzava, telefon, fax, mail, mobitel, oib, ugovor, osoba);
klijentiSearchModel.add(klijentSearch);
}
result.close();
selectStmt.close();
}
您只需将数组/列表。。。不管那些东西是什么。。。放入另一个数组或列表 然后迭代该数组/列表 完成了 提示:您的命名可以大大改进。你的名字应该表明变量背后的“东西”是什么 还可以使用
Map>Map=newhashmap();
map.put(“nazivK”,newArrayList());
map.put(“adresaK”,新的ArrayList());
//.....
//将所有列表替换为空
map.replaceAll((s,list)->list.isEmpty()?null:list);
//或者干脆把它拿走
对于(迭代器和您的实际代码,您的评论问题中的@khelwood命题是最好的方法。
其他解决方案会增加开销,并在不带来附加值的情况下更改您的设计。
Map<String, List<?>> map = new HashMap<>();
map.put("nazivK", new ArrayList<>());
map.put("adresaK", new ArrayList<>());
//.....
//replace all lists with null
map.replaceAll((s, list) -> list.isEmpty() ? null : list);
//or just remove it
for(Iterator<Map.Entry<String, List<?>>> it = map.entrySet().iterator(); it.hasNext(); ) {
Map.Entry<String, List<?>> entry = it.next();
if(entry.getValue().isEmpty()) {
it.remove();
}
}
然后你可以这样称呼它:
public static String returnNullIfEmpty(String value){
if (value == null || value.length() == 0){
return null;
}
return value;
}
编辑
通过编辑问题,您可以在从klijentiFormEvent对象检索值时包含处理:
nazivK = returnNullIfEmpty(nazivK);
adresaK= returnNullIfEmpty(adresaK);
正如GhostCat所建议的,将您的值放入数组/列表中。
例如,您可以这样做(我假设这些值是字符串):
变量是否有共同的类型,例如String
?那么nazivK=nazivK.length()如何==0?null:nazivK
等等?如果变量位于列表或数组中而不是单独命名,则可以在循环中完成所有操作。或者,可以编写方法nullIfEmpty
并编写nazivK=nullIfEmpty(nazivK);
等。如果变量具有相同的数据类型,则创建一个变量集合。迭代该集合并编写逻辑并记录:这样的代码是糟糕设计的征兆。不要只看这些代码;退后一步,让一些更有经验的人更多地查看您的项目。您在这里展示的内容肯定只是冰山一角;-)我声明的方法“public void searchKlijenta(KlijentiFormEvent KlijentiFormEvent)”KlijentiFormEvent是来自我的字段(字符串naziv=nazivField.getText())的数据,这样您的代码就不会产生我想要的结果..检查most be be be be BER sql语句..null most be be in sql语句如果if语句运行..我有用于搜索客户机的表单I数据库,如果某个内容的文本字段为空,我不想在数据库emtpy字段中搜索,即在搜索表单中必须键入一些文本..是的,现在可以了,谢谢。我有个问题,什么更好?1.调用方法的解决方案:telefonK=returnNullIfEmptys(telefonK);或2。nazivK=(nazivK.length()==0)?null:nazivK;第一个更好,因为你不重复逻辑。如果你必须改变它,你必须在一个地方做。除此之外,在第二个解决方案中,将nazivK
变量重复3次。这意味着在添加新控件时,必须复制粘贴现有指令,并将变量名更改三次。它更容易出错。
nazivK = returnNullIfEmpty(nazivK);
adresaK= returnNullIfEmpty(adresaK);
String nazivK = returnNullIfEmpty(klijentiFormEvent.getNaziv());
String adresaK = returnNullIfEmpty(klijentiFormEvent.getAdresa());
...
/* Order in array nazivK, adresaK, gradK, drzavaK, telefonK,
faxK, mailK, mobitelK, oibK, ugovorK, osobaK */
String values[] = new String[11];
for (String val: values) {
if (val == null || val.length() == 0) {
val = null;
}
}