【问题标题】:How to convert the negative integer to positive如何将负整数转换为正整数
【发布时间】:2014-11-13 10:18:16
【问题描述】:
String v1 = lbl_READING_NUMBER.getText();


int a = Integer.parseInt(jLabel_PREVIOUS_READ.getText());

int b = Integer.parseInt(jLabel_PRESENT_READ.getText());

int cm = a-b;

try{

    String sql = "UPDATE reading SET Cubic_meter=' "+cm+" ' WHERE Reading_Number=' "+v1+"' ";

    ps = conn.prepareStatement(sql);

    rs=ps.executeUpdate();
}
catch(Exception e){

    JOptionPane.showMessageDialog(null, e);

}

此代码在我的数据库中显示负的 Cubic_meter 列,即使 jLabel_PREVIOUS_READ.getText() 小于 jLabel_PRESENT_READ.getText(),也希望有一个正的 Cubic_meter。

【问题讨论】:

  • 与您的肯定/否定问题无关,但正如 ChoChoPK 指出的那样,最好使用参数化查询,而不是字符串连接。原因如下:xkcd.com/327
  • 如果以下答案之一回答了您的问题,那么 SO 的工作方式,您将希望“接受”答案。详情:stackoverflow.com/help/someone-answers 但前提是它真的得到了回答。

标签: java netbeans wampserver


【解决方案1】:

听起来你可能正在寻找Math.abs

返回一个 int 值的绝对值。如果参数不是负数,则返回参数。如果参数是否定的,则返回参数的否定。

(还有其他类型的版本——longfloatdouble...)

有一个重要的警告:

请注意,如果参数等于Integer.MIN_VALUE 的值(可表示的最负的 int 值),则结果是相同的值,即为负。

【讨论】:

  • 请指导我如何将它插入到我的代码中。感谢您顺便回答。
  • @JhaezzJohn: int cm = Math.abs(a-b);?
【解决方案2】:

试试这个:

int cm = a-b;
int cm2 = cm*(-1);

try{

    String sql = "UPDATE reading SET Cubic_meter=' "+cm2+" ' WHERE Reading_Number=' "+v1+"' ";

    ps = conn.prepareStatement(sql);

    rs=ps.executeUpdate();
}
catch(Exception e){

    JOptionPane.showMessageDialog(null, e);

}

【讨论】:

    【解决方案3】:

    像 T.J. 一样做 Math.abs。克劳德建议,但也这样做

    解析输入时捕获 NumberFormatException

    更改您的 SQL 语句以使用绑定变量,像这样

        String sql = "UPDATE reading SET Cubic_meter=? WHERE Reading_Number= ?";
        ps = conn.prepareStatement(sql);
        ps.setInt(1, cm); // assuming always positive
        ps.setInt(2, v1);
    

    http://en.wikipedia.org/wiki/Prepared_statement

    使用绑定变量是防止 SQL 注入的好习惯。

    【讨论】:

    • 先生,我听从了您的建议,但知道会发生异常:“没有为参数 1 指定值” String sql =“更新读数集 Cubic_meter=?where Reading_Number=?”; ps=conn.prepareStatement(sql); ps.executeUpdate(); ps.setInt(1, cm); ps.setInt(2, v1);
    • 你需要把executeUpdate放在最后
    • 如何在我的代码中解析 NumberFormatException 先生
    • 我的代码使用 NumberFormatException 出错:ps=conn.prepareStatement(sql); ps.setInt(1, cm); ps.setInt(2, v1); ps.executeUpdate();
    【解决方案4】:

    你可以用这个吗?

     value=value*-1; //simply multiply by -1. 
    

    你也可以设置一个条件来检查值是否为负,比如 if 语句。

     if(value<0)
       value=value*-1; //simply multiply by -1. 
    

    【讨论】:

    • Crowder 先生提供的解决方案很棒,而且实施起来更短。您可以将其用作value=Math.abs(value);。两者都行。
    猜你喜欢
    • 2014-03-20
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2011-12-13
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多