这是我的代码
import java.util.Scanner;
import java.text.DecimalFormat;
public class Calories
{
public static void main (String[] args)
{
int fat; //Grams of fat
int fcal; //Calories from fat
int total; //Number of Calories
long result; //Percent of calories from fat
System.out.println("This program finds the percent of calories from fat");
//Here the user inputs the numbers
Scanner keyboard = new Scanner (System.in);
System.out.print("Enter the total grams of fat " );
fat = keyboard.nextInt();
fcal = fat * 9;
System.out.print("Enter the total number of calories " );
total = keyboard.nextInt();
result = fcal / total * 100;
if(result <= 30)
{
System.out.println("Food is low in fat!");
}
DecimalFormat formatter = new DecimalFormat("#0");
System.out.println("Calories from fat : " + formatter.format(result) + "%");
}
}
无论我输入什么,我的输出总是为零。谁能告诉我这里我做错了什么?我不确定DecimalFormat,数据类型还是keyboard.nextInt();是我的问题的一部分,我已多次检查并询问另一个人说他们的代码运行正常。
答案 0 :(得分:5)
您的fcal
和total
变量都是整数,因此您执行整数除法。任何时候fcal < total
,你总会得到0作为答案。
在进行划分时,你需要施展为双倍。
由于result
被声明为long
,因此不会有效,因此会有精度损失。要么更改result
的数据类型,要么将结果转换回long
。