当前位置: 首页 > 知识库问答 >
问题:

较短的代码(数组/If语句)

范轶
2023-03-14

我所要知道的就是如何将这段代码写得更短(如果可能的话)。有人能看看吗?

我找不到如何以更短的方式编写它,但也许有人知道一种方法来做到这一点。也许我可以将所有这些代码只放在1个If-语句或其他什么中?

String arrayWoord[]=new String[10];
arrayWoord[0] = letterVeld1.getText();
arrayWoord[1] = letterVeld2.getText();
arrayWoord[2] = letterVeld3.getText();
arrayWoord[3] = letterVeld4.getText();
arrayWoord[4] = letterVeld5.getText();
arrayWoord[5] = letterVeld6.getText();
arrayWoord[6] = letterVeld7.getText();
arrayWoord[7] = letterVeld8.getText();
arrayWoord[8] = letterVeld9.getText();
arrayWoord[9] = letterVeld10.getText();
if (arrayWoord[0].equals("")) {
  toonKnop1.setVisible(false);
  letterlijnLabel1.setVisible(false);
} // end of if
if (arrayWoord[1].equals("")) {
  toonKnop2.setVisible(false);
  letterlijnLabel2.setVisible(false);
} // end of if
if (arrayWoord[2].equals("")) {
  toonKnop3.setVisible(false);
  letterlijnLabel3.setVisible(false);
} // end of if
if (arrayWoord[3].equals("")) {
  toonKnop4.setVisible(false);
  letterlijnLabel4.setVisible(false);
} // end of if
if (arrayWoord[4].equals("")) {
  toonKnop5.setVisible(false);
  letterlijnLabel5.setVisible(false);
} // end of if
if (arrayWoord[5].equals("")) {
  toonKnop6.setVisible(false);
  letterlijnLabel6.setVisible(false);
} // end of if
if (arrayWoord[6].equals("")) {
  toonKnop7.setVisible(false);
  letterlijnLabel7.setVisible(false);
} // end of if
if (arrayWoord[7].equals("")) {
  toonKnop8.setVisible(false);
  letterlijnLabel8.setVisible(false);
} // end of if
if (arrayWoord[8].equals("")) {
  toonKnop9.setVisible(false);
  letterlijnLabel9.setVisible(false);
} // end of if
if (arrayWoord[9].equals("")) {
  toonKnop10.setVisible(false);
  letterlijnLabel10.setVisible(false);
} // end of if

共有3个答案

锺离飞鸣
2023-03-14

使用for循环遍历arrayWooord,并在for循环中放置条件以完成您尝试执行的任务。

姜玉泽
2023-03-14

您可以尝试使用for循环使其更短:

for (String word : arrayWoord) { 
   if (word.equals("")) {
      // put your code here..       
   }
}
公冶谦
2023-03-14

假设各种标签是JLabel的实例,并且各种Knop是JComponent,您可以填充三个数组,并使用单个循环。比如,

String arrayWoord[] = { letterVeld1.getText(), letterVeld2.getText(), 
        letterVeld3.getText(), letterVeld4.getText(), letterVeld5.getText(), 
        letterVeld6.getText(), letterVeld7.getText(),
        letterVeld8.getText(), letterVeld9.getText(), letterVeld10.getText() };
JLabel[] letterLabels = { letterlijnLabel1, letterlijnLabel2, letterlijnLabel3, 
        letterlijnLabel4, letterlijnLabel5, letterlijnLabel6, letterlijnLabel7, 
        letterlijnLabel8, letterlijnLabel9, letterlijnLabel10 };
JComponent[] knops = { toonKnop1, toonKnop2, toonKnop3, toonKnop4, toonKnop5, 
        toonKnop6, toonKnop7, toonKnop8, toonKnop9, toonKnop10 };
for (int i = 0; i < arrayWoord.length; i++) {
    if (arrayWoord[i].isEmpty()) {
        knops[i].setVisible(false);
        letterLabels[i].setVisible(false);
    }
}

而且,如果您使用的是Java 8,那么for循环可以用IntStream、filter和forEach等重写

IntStream.range(0, arrayWoord.length).filter(i -> arrayWoord[i].isEmpty())
            .forEach(i -> {
    knops[i].setVisible(false);
    letterLabels[i].setVisible(false);
});

请注意,String。当字符串长度为0时,isEmpty()返回true。

 类似资料:
  • 我只是想知道,有没有更快的方法写这个? 我知道我可以把它们放在同一条线上,但是有没有更简单的方法可以让我不需要第二次重写“名称 == ''" 部分?有点像这样: 其中首先计算距离部分,如果满足其中一个参数,则名称==''部分将与其进行检查。

  • 问题内容: 我正在寻找一种缩短此代码并避免重复代码和if语句的方法。我正在做的是创建一个计算器,该计算器在字符串中搜索运算符“ * / +-”并相应地执行它们。有任何想法吗? 另外,是否有解决方案来接受带有两个以上操作数的字符串?即5 + 10 * 2/3 问题答案: 要更改代码,可以使用switch语句,并将一些冗余代码放在开关之前或之后。

  • 我有2个WordPress短代码正在使用: 一章。[章节名称="开始"]...内容...[/章] 目录[toc][/toc]。toc需要显示章节的简单列表。 规范: 一篇文章可以有很多章节。 帖子中可以有一个、两个或没有toc短代码。 toc可以在章节之前或之后,也可以在章节之前和之后。这取决于帖子作者,所以我事先不知道。 我不能使用嵌套的简码,因为这些对作者来说很难使用。 我想到了使用静态toc

  • 我有一个短代码(outputURL),用于将值输出到URL中。该值从短代码(valueURL)中检索。valueURL输出是文本包装在div中: 我只需要textForURL值,不包括div标记。到目前为止,我只能输出div标记和文本,而不能输出纯文本的干净版本。 这是我的简码函数: 我进行了研究,并能够将其整合在一起,但我不确定我是否朝着正确执行的方向前进。任何能帮助我实现目标的人都将不胜感激。

  • 我试着比较两个值 我得到一个错误

  • 我喜欢从Elasticsearch得到的结果,使用Edge-NGrams索引数据,并使用不同的分析器进行搜索。然而,我更希望匹配的较短术语比较长术语排名更高。 例如,以术语和为例。如果我使用术语执行查询,我会以相同的得分返回这两个文档。我希望的得分高于,因为closer与的匹配类似于Levenshtein距离算法。 设置索引: 插入文档: 搜索查询: 结果: 有谁知道我是如何将等较短的术语排在之前