检查标签是否为空的方法不起作用

Method to check if label is empty is not working

我正在开发一个使用 jLabels 的程序,我需要检查标签是否为空。如果它是空的,它应该只是弹出一个注释,说明它是空的,没有别的,但它实际上会抛出很多错误。我正在使用 label.getText().isEmpty()。
这是代码:

if(Integer.parseInt(najboljsi1.getText())<1||Integer.parseInt(najboljsi1.getText())>17||najboljsi1.getText().isEmpty()||
       Integer.parseInt(najboljsi2.getText())<1||Integer.parseInt(najboljsi2.getText())>17||najboljsi2.getText().isEmpty()||
       Integer.parseInt(najboljsi3.getText())<1||Integer.parseInt(najboljsi3.getText())>17||najboljsi3.getText().isEmpty()||
       Integer.parseInt(najslabsi1.getText())<1||Integer.parseInt(najslabsi1.getText())>17||najslabsi1.getText().isEmpty()||
       Integer.parseInt(najslabsi2.getText())<1||Integer.parseInt(najboljsi2.getText())>17||najslabsi2.getText().isEmpty()||
       Integer.parseInt(najslabsi3.getText())<1||Integer.parseInt(najslabsi3.getText())>17||najslabsi3.getText().isEmpty())
    {
        jLabel101.setForeground(Color.red);
        jLabel101.setText("Eno ali več vnesenih števil ni v pravilnem obsegu (1-16)!");
    }
    else
    {
        jLabel101.setText("");
        int a=Integer.parseInt(najboljsi1.getText());
        tabela[a-1]+=3;
        int b=Integer.parseInt(najboljsi2.getText());
        tabela[b-1]+=2;
        int c=Integer.parseInt(najboljsi3.getText());
        tabela[c-1]+=1;
        int d=Integer.parseInt(najslabsi1.getText());
        tabela[d-1]-=3;
        int e=Integer.parseInt(najslabsi2.getText());
        tabela[e-1]-=2;
        int f=Integer.parseInt(najslabsi3.getText());
        tabela[f-1]-=1;
        najboljsi1.setText("");
        najboljsi2.setText("");
        najboljsi3.setText("");
        najslabsi1.setText("");
        najslabsi2.setText("");
        najslabsi3.setText("");
        count++;
        jLabel1.setText("Učenec "+count);
    }

if 语句中的其他一切正常,如果值小于 1 或大于 16,它会弹出一个弹出窗口。

如果您在带有文本“”(空字符串)的标签上执行 Integer.parseInt(najboljsi2.getText()),它将不是整数。将抛出异常。

我认为你的问题是在使用"Integer.parseInt"时没有任何检查!例如,如果变量包含一个空字符串,它将抛出一个异常并且您的 if 子句将永远不起作用!

我会通过仔细检查来处理这种情况。

  1. 检查它是否已经是一个数字(本指南可以帮助 check-if-variable-is-a-number-in-javascript)
  2. 然后,如果是一个字符串,检查它是否为空,是否真的包含一个字符串(下面的post也可以帮助check-whether-an-input-string-contains-a-number-in-javascript

Ps。抱歉,我用一些额外的链接修改了答案

是的,您必须在 najboljsi1.getText() 的任何解析之前测试 najboljsi1.getText().isEmpty()。 你的 if 会变成:

if(najboljsi1.getText().isEmpty()||Integer.parseInt(najboljsi1.getText())<1||Integer.parseInt(najboljsi1.getText())>17||
       najboljsi2.getText().isEmpty()||Integer.parseInt(najboljsi2.getText())<1||Integer.parseInt(najboljsi2.getText())>17||
etc...