我正在测试一个CPU使用率检查程序,我得到一个空指针异常,所以我添加了null check.当我添加null检查时,我开始收到一系列错误.这是代码:
double ideltime=Double.parseDouble(cpuIdle.trim());
**String idelTimeStr=formatter.format(ideltime);
if(idelTimeStr!=null)**
double usuage=temp - Double.parseDouble(idelTimeStr);
cpuUsage = formatter.format(usuage);
Run Code Online (Sandbox Code Playgroud)
突出显示的行显示添加了空检查.此null检查后的编译错误如下:
CPUUsage.java:29: error: '.class' expected
double usuage=temp - Double.parseDouble(idelTimeStr);
^
CPUUsage.java:29: error: not a statement
double usuage=temp - Double.parseDouble(idelTimeStr);
^
CPUUsage.java:29: error: illegal start of expression
double usuage=temp - Double.parseDouble(idelTimeStr);
^
CPUUsage.java:29: error: ';' expected
double usuage=temp - Double.parseDouble(idelTimeStr);
Run Code Online (Sandbox Code Playgroud)
请帮忙解决这个问题.
当只有一个语句时,你可以省略花括号:
if (condition)
statement;
Run Code Online (Sandbox Code Playgroud)
是完全相同的
if (condition) {
statement;
}
Run Code Online (Sandbox Code Playgroud)
这由JLS第14章:块和语句中的语法定义.相关的生产条款是:
IfThenStatement:
if ( Expression ) Statement
...
Statement:
StatementWithoutTrailingSubstatement
...
StatementWithoutTrailingSubstatement:
Block
EmptyStatement
ExpressionStatement
...
Run Code Online (Sandbox Code Playgroud)
最后,a ExpressionStatement类似于赋值或方法调用,但不是变量声明.变量声明需要一个块.
块是大括号内的语句,本地类声明和局部变量声明语句的序列.
每个局部变量声明语句都立即由一个块包含.
由于您double usuage = ...在这种情况下声明需要花括号:
if(idelTimeStr != null) {
double usuage=temp - Double.parseDouble(idelTimeStr);
}
Run Code Online (Sandbox Code Playgroud)
与... 不完全相同
if(idelTimeStr != null)
double usuage=temp - Double.parseDouble(idelTimeStr);
Run Code Online (Sandbox Code Playgroud)
使用花括号,您的程序在语法上很好,但是您需要考虑该usuage变量仅在块中可见,因此您需要在花括号内添加更多代码(或usuage使用默认值声明和初始化)在if街区之外).
在任何情况下,我建议即使只有一个声明,也总是使用大括号.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |