gpt4 book ai didi

java - 添加 Null 检查会引发一系列编译错误

转载 作者:搜寻专家 更新时间:2023-10-31 19:53:42 24 4
gpt4 key购买 nike

我正在测试一个用于检查 CPU 使用率的程序,但出现空指针异常,因此我添加了空指针检查。当我添加空检查时,我开始收到一系列错误。这是代码:

double ideltime=Double.parseDouble(cpuIdle.trim());
**String idelTimeStr=formatter.format(ideltime);
if(idelTimeStr!=null)**
double usuage=temp - Double.parseDouble(idelTimeStr);
cpuUsage = formatter.format(usuage);

突出显示的行显示添加的空检查。 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);

请帮助解决这个问题。

最佳答案

只有一个语句时可以省略花括号:

if (condition) 
statement;

等同于

if (condition) { 
statement;
}

这是由 JLS Chapter 14: Blocks and Statements 中的语法定义的.相关的生产条款是:

IfThenStatement:
if ( Expression ) Statement
...

Statement:
StatementWithoutTrailingSubstatement
...

StatementWithoutTrailingSubstatement:
Block
EmptyStatement
ExpressionStatement
...

最后,ExpressionStatement 类似于赋值或方法调用,但不是变量声明。变量声明需要一个 block

JLS 14.2: Blocks :

A block is a sequence of statements, local class declarations, and local variable declaration statements within braces.

JLS 14.4: Local Variable Declaration Statements :

Every local variable declaration statement is immediately contained by a block.

由于您要声明 double usuage = ...,在这种情况下您需要大括号:

if(idelTimeStr != null) {
double usuage=temp - Double.parseDouble(idelTimeStr);
}

相同
if(idelTimeStr != null)
double usuage=temp - Double.parseDouble(idelTimeStr);

有了花括号,你的程序语法没问题,但是你需要考虑usuage变量只在 block 内可见,所以你需要在花括号内添加更多代码(或在 if block 之外使用默认值声明和初始化 usuage)。

无论如何,我suggest to always use braces even if there is only one statement .

关于java - 添加 Null 检查会引发一系列编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33820936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com