我有一个字符串-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
}
}
答案 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。