【问题标题】:If sentences with multiple variables如果句子有多个变量
【发布时间】:2013-09-06 00:22:46
【问题描述】:

我一直在研究,但找不到解决我在这里遇到的问题的方法。以下是部分代码:

    String p1 = PHORA1.getText();
    String p2 = PHORA2.getText();
    String p3 = PHORA3.getText();
    String p4 = PHORA4.getText();
    String p5 = PHORA5.getText();
    char i1 = p1.charAt(0);
    char i2 = p2.charAt(0);
    char i3 = p3.charAt(0);
    char i4 = p4.charAt(0);
    char i5 = p5.charAt(0); 

if (i1 == '<') {
        ImageIcon img3 = new ImageIcon("src\\img\\yellow.png");
        ok.setIcon(img3);
        ok.setVisible(true);
        ok.setText("");
        ok.setToolTipText("MISTAKE");
    } else {
        ImageIcon img3 = new ImageIcon("src\\img\\ok.png");
        ok.setIcon(img3);
        ok.setVisible(true);
        ok.setText("");
        ok.setToolTipText("RIGHT.");
    }

我需要这样做 19 次(尽管在代码中我只显示了每种类型的 5 个变量以使其更短,但它们实际上是 19 个)。条件中的语句完全相同,唯一变化的是变量。

其余变量的名称是 p6,p7....p19 和 i6,i7....i19​​。 有没有比复制精确代码 19 次更快的方法?

【问题讨论】:

  • 是否每个 if 都做同样的事情?因此,例如,如果和 else,您还想要 19 个,但唯一改变的是“i1”?
  • 你知道循环和数组吗?
  • 我一直都知道循环和数组可以用在这种情况下,就是不知道怎么用

标签: java string if-statement label


【解决方案1】:
String[] p = new String[19];
char[] i = new char[19];
for (int j = 0; j < 19; j++) {
    p[j] = PHORA[j].getText();
    i[j] = p[j].charAt(0);
    if (i[j] == '<') {
        // etc...
    }
}

这假设您也可以将 PHORA1...PHORA19 编辑为数组。如果没有,您可能会遇到一些问题...

【讨论】:

  • 是的,如果我没记错的话,我要做的就是用 19 个术语声明和排列,但我看到在你写的第一行中已经完成了
  • 不需要声明一个新的字符串数组'p'。 PHORA[j].getText().charAt(0);可以正常工作。
  • @user2310289 没错,但我试图让它接近原始代码,以便 OP 可以更好地了解数组如何替换所有变量。
【解决方案2】:

为什么不使用字符串数组

String[] PHORA

然后您可以遍历数组,然后将字符串传递给一个方法,该方法采用第一个字符并进行测试。

for (int x = 0; x < 19; x++) {
    testThis (PHORA[x].getText().charAt(0));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2012-07-16
    • 2012-04-05
    • 1970-01-01
    • 2018-06-20
    • 2019-08-10
    相关资源
    最近更新 更多