将双数值转换为文本

时间:2013-04-22 20:00:29

标签: java string double joptionpane

在我的代码中的循环中的以下if语句中,如果给定的oldsalary [i]不符合这些准则,我想将oldsalary [i]的先前数值恢复为“Error”。但是我希望它保持原样[i],因为我将在我的代码中稍后显示所有旧工具[i]。

所以基本上当所有oldsalary [i]显示在另一个循环中时,我希望能够看到“Error”,因此它知道该值出错了。

我知道我拥有它的方式是完全错误的,我只是这样说是有道理的。对不起,如果它没有任何意义。

if(oldsalary[i] < 25000 || oldsalary[i] > 1000000){

      JOptionPane.showMessageDialog(null, userinput[i]+"'s salary is not within 
      necessary limit.\n Must be between $25,000 and $1,000,000. \n If salary is 
      correct, empolyee is not eligible for a salary increase.");

      double oldsalary[i] = "Error";





        }

2 个答案:

答案 0 :(得分:2)

您不能将数值都存储在单个double值中。

最好的办法是将薪水包装为一个对象,其中包含工资值和表示错误情况的布尔值:

class Salary {
    private double value;
    private boolean error = false;
    ... constructor, getters and setters
}

并更新您的代码以使用该对象。即。

if(oldsalary[i].getValue() < 25000 || oldsalary[i].getValue() > 1000000) {
    oldsalary[i].setError(true);
    ...
}

所以稍后你可以做

if (oldsalary[i].isError()) {
    // display error message
}

答案 1 :(得分:0)

您可以使用额外的List来存储未通过您的需求测试的索引。

List<Integer> invalidIndices = new ArrayList<>();
for (...){

if(oldsalary[i] < 25000 || oldsalary[i] > 1000000){

      JOptionPane.showMessageDialog(null, userinput[i]+"'s salary is not within 
      necessary limit.\n Must be between $25,000 and $1,000,000. \n If salary is 
      correct, empolyee is not eligible for a salary increase.");

      invalidIndices.add(i);
}
}