处理 - 将字符串解析为float时抛出NullPointerException

时间:2015-11-12 19:39:06

标签: java parsing nullpointerexception floating-point processing

我有一个字符串-0.06,0.00,-0.99。我想将第一个数字解析为浮点数。

我正在使用:

String myString = "-0.06,0.00,-0.99";
float myFloat = float(split(myString, ",")[0]);
println(split(myString, ",")[0]); // prints -0.06

第二行抛出NullPointerException

我也尝试过以下操作并得到完全相同的错误。

 float myFloat = Float.parseFloat(split(myString, ",")[0]);

如何在不获取NullPointerException的情况下将字符串解析为浮点数。

实际MVCE:

我正在使用处理来逐行接收来自串口的输入。第一个输入是"-0.06,0.00,-0.99"

buffer = port.readStringUntil('\n'); //take input from serial til line-break

float[] acceleration;
if (buffer != null) {
  if (buffer.indexOf(",") != -1) {
    buffer = trim(buffer);
    acceleration[0] = float(buffer.split(",")[0]); // this throws the error
  }
}

3 个答案:

答案 0 :(得分:0)

Java包含primitive类型的包装类。例如,有一个包含Float原语的float类。这些包装类具有valueOf(String s)个函数,可以将String类型的primitive表示形式解析为实际的primitive形式。如果Float.valueOf(stringRepresentationOfAFloat)格式正确,则调用float将为您提供 String floatCsv = "-0.06,0.00,-0.99"; String [] floatCsvSplit = floatCsv.split(","); for(String floatStringValue : floatCsvSplit){ float floatVariable = Float.valueOf(floatStringValue); System.out.println(floatVariable); } 变量。

请参阅下面的代码示例:

String myString = "-0.06,0.00,-0.99";
float myFloat = Float.parseFloat(myString.split(",")[0]);
System.out.println(myFloat); // prints -0.06

答案 1 :(得分:0)

试试这个:

    private void sueldoActionPerformed(java.awt.event.ActionEvent evt) {                                       

}                                      

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String sueldo = this.sueldo.getText();
    int sueldoInt = Integer.parseInt(sueldo);
    String salud = this.salud.getText();
    int saludInt = Integer.parseInt(salud);
    String afp = this.afp.getText();
    int afpInt = Integer.parseInt(afp);
    String otros = this.otros.getText();
    int otrosInt = Integer.parseInt(otros);

    double saludD = sueldoInt * (saludInt * 0.01);
    double afpD = sueldoInt * (afpInt * 0.01);

    int calcular = (int) (sueldoInt - saludD - afpD - otrosInt);

   JOptionPane.showMessageDialog(null,+calcular);     

答案 2 :(得分:-1)

您是否正在运行Java 1.7?该版本中存在一个错误,在1.8中解决,其中String.split()在数组的开头返回一个空元素。

尝试打印split(myString, ",");你应该看到类似["", "-0.06", "0.00", "-0.99"]的东西。

有关详细信息,请参阅this SO question