作者a613204 (胖胖)
看板java
标题[问题] if-else 新手发问
时间Sun Sep 30 21:42:10 2007
import java.io.*;
public class test
{
public static void main(String args[]) throws IOException
{
BufferedReader buf;
String str;
int act;
double weight,tcalorie,ncalorie;
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入体重(公斤)");
str=buf.readLine();
weight=Double.parseDouble(str);
System.out.println("请输入今天所吃进的热量");
str=buf.readLine();
tcalorie=Double.parseDouble(str);
System.out.println("活动量大请输入1,普通请输入2,低请输入3");
str=buf.readLine();
act=Integer.parseInt(str);
-----------------------------------------------
if(act==1)
ncalorie=weight*22/0.6;
else if(act==2)
ncalorie=weight*22/0.65;
else
ncalorie=weight*22/0.75;
-----------------------------------------------
str=(tcalorie>ncalorie)?("吃太多了")"请继续保持");
System.out.println(str);
}
}
上面情况可以顺利编译
请问为什麽如果在有虚线包围的这段程式码我使用
if(act==1)
ncalorie=weight*22/0.6;
if(act==2)
ncalorie=weight*22/0.65;
if(act==3)
ncalorie=weight*22/0.75;
会显示variable ncalorie might not have been initialized呢???
是不能这样用吗?
--
※ 发信站: 批踢踢实业坊(ptt. cc)
◆ From: 122.126.24.8
1F:推 PsMonkey:红色在哪.... 顺便先看一下你的变数在哪 09/30 21:52
2F:推 slalala:JAVA比较严谨 因为你初始化的ncalorie是空值 09/30 21:53
※ 编辑: a613204 来自: 122.126.24.8 (09/30 22:23)
※ 编辑: a613204 来自: 122.126.24.8 (09/30 22:23)
※ 编辑: a613204 来自: 122.126.24.8 (09/30 22:25)
※ 编辑: a613204 来自: 122.126.24.8 (09/30 22:28)
3F:推 a613204:那为什麽使用else就可以顺利编译呢..? 09/30 22:28
4F:推 callmesaga:只有if可能有通通不成立的情况 有else则至少会成立 09/30 22:33
5F:推 qrtt1:因为加了else会满足 lazy 初始的条件, 就不会没有初始值 09/30 23:01
6F:推 slalala:楼上专业XD 10/01 01:01
7F:→ slalala:原PO的问题 我从学CPP改学JAVA的时候也一直碰到(  ̄ c ̄)y 10/01 01:01
8F:推 a613204:感谢各位 问题已解决 10/01 11:59