Java 代码不允许使用我的变量

标签 java

当我尝试运行此代码时,它不允许我使用“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/

相关文章:

java - Android 通知无法访问接收到的字符串

java - 在循环内分配变量

java - 在 World Wind 中点击禁用地球运动

java - GCMRegistrar jar 在 eclipse 中导致错误,未找到源。档位调试

java - 如何将 LocalBroadcast 从 BroadcastReceiver 发送到正在运行的服务?

java - 如何设置 NetBeans 引导类路径以包含 mail.jar?

Java - 使用注释和拦截方法?

java - 如何将 Lombok @SuperBuilder 与自定义构建器和继承层次结构中的多个类一起使用?

java - JUnit Eclipse 显示 System.out.print() 的

java - 如何使用 Apache Ant 以 UTF-8 编码 Java 文件?