当我尝试运行此代码时,它不允许我使用“bmi”。我正在尝试制作一个简单的体重指数计算器,但我不明白为什么它不起作用。如果你能正确地重写代码,它会帮助我更好地学习。
import java.util.Scanner;
public class Bmi {
int weight;
int height;
int bmi = weight /(height*height) * 703;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter weight: ");
int weight = input.nextInt();
System.out.print("Enter height: ");
int height = input.nextInt();
System.out.println(bmi);
}
}
最佳答案
您正在尝试在静态上下文中使用非静态成员。
这里你实际上不需要任何实例/静态变量。只需使用局部变量即可。
import java.util.Scanner;
public class Bmi {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter weight: ");
int weight = input.nextInt();
System.out.print("Enter height: ");
int height = input.nextInt();
int bmi = weight /(height*height) * 703;
System.out.println(bmi);
}
}
虽然这在现实世界中不会发生,但当你的高度大于体重时,由于整数除法的发生,你最终会为零。最好把它们改成 double 。读一读Why is the result of 1/3 == 0?
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter weight: ");
double weight = input.nextInt();
System.out.print("Enter height: ");
double height = input.nextInt();
double bmi = weight / (height * height) * 703;
System.out.println(bmi);
}
终于
int bmi = weight /(height*height) * 703;
该语句不会跟踪体重和高度值。每次它们发生变化时,您都需要重新评估。
关于Java 代码不允许使用我的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48589256/