我想比较下一个输出,以获得我想要的结果。这是我的代码:
if (this.bmi < 18.5 )
{
this.hasil="Berat badan kurang";
}
else if (this.bmi >= 18.5 && this.bmi <=24)
{
this.hasil = "Normal";
}
else if (this.bmi >= 25 && this.bmi <=29 )
{
this.hasil = "Berat badan lebih";
}
else
{
this.hasil = "obesitas";
}
console.log(this.hasil);
console.log(this.bmi);
})`
this.bmi
是一个数字,this.hasil
是string
在&&
运算符无法识别的代码上,它只是在包含一个条件的if
和else
之间得出结果
答案 0 :(得分:1)
我已经创建了一个代码的工作示例,并且&&
已被识别。但是,我可以在您的代码中看到错误。
24
和25
之间的编号存在逻辑差距(例如24.1,24.2等)。
以下是我用以下代码包装代码的示例类:
class Example {
constructor(private bmi: number, private hasil: string) {}
go() {
console.log(this.hasil);
if (this.bmi < 18.5) {
this.hasil = "Berat badan kurang";
}
else if (this.bmi >= 18.5 && this.bmi <= 24) {
this.hasil = "Normal";
}
else if (this.bmi >= 25 && this.bmi <= 29) {
this.hasil = "Berat badan lebih";
}
else {
this.hasil = "obesitas";
}
console.log(this.hasil, this.bmi);
}
}
以下是一些旨在解决所有问题的测试用例:
new Example(18.4, 'Test 1').go();
new Example(18.5, 'Test 2').go();
new Example(18.6, 'Test 3').go();
new Example(24, 'Test 4').go();
new Example(24.1, 'Test 5').go(); // <--
new Example(24.9, 'Test 6').go(); // <--
new Example(25, 'Test 7').go();
new Example(29, 'Test 8').go();
new Example(29.1, 'Test 9').go();
测试5和测试6一直到obesitas
,这可能解释了您对代码的问题。基本上,第二个区块最多可达this.bmi <= 24
,但下一个区块从this.bmi >= 25
开始,导致范围内的差距。
测试输出:
Test 1
Berat badan kurang 18.4
Test 2
Normal 18.5
Test 3
Normal 18.6
Test 4
Normal 24
Test 5
obesitas 24.1
Test 6
obesitas 24.9
Test 7
Berat badan lebih 25
Test 8
Berat badan lebih 29
Test 9
obesitas 29.1
使用像这样的if语句时要考虑的一件事是,如果你超过了之前的条件,你实际上知道是否是假的,所以你可以用你可以更好的方式表达事物&# 39; t错过了一个范围:
class Example {
constructor(private bmi: number, private hasil: string) {}
go() {
console.log(this.hasil);
if (this.bmi < 18.5) {
this.hasil = "Berat badan kurang";
}
else if (this.bmi <= 24) {
this.hasil = "Normal";
}
else if (this.bmi <= 29) {
this.hasil = "Berat badan lebih";
}
else {
this.hasil = "obesitas";
}
console.log(this.hasil, this.bmi);
}
}