Java 初始化局部/类变量时出现问题

Java 初始化局部/类变量时出现问题,java,variables,initialization,local-variables,class-variables,Java,Variables,Initialization,Local Variables,Class Variables,真的很抱歉编写了这么长又糟糕的代码。我认为必须查看所有代码/布局才能解决问题 我得到的错误是: 异常…不可编译源代码-变量totalIn可能未初始化 异常…不可编译源代码-变量kgs可能未初始化 在我插入do/while try/catch语句进行异常处理之前,这个公式起作用。 我花了数小时阅读有关声明和初始化变量、局部变量和类变量的内容。我尝试了几种不同的方法,但我没有尝试解决这个问题。 我不知道是什么原因造成的,以及如何修复它。我想弄明白这一点并理解解决方案。 在哪里初始化“totalIn”

真的很抱歉编写了这么长又糟糕的代码。我认为必须查看所有代码/布局才能解决问题

我得到的错误是: 异常…不可编译源代码-变量totalIn可能未初始化 异常…不可编译源代码-变量kgs可能未初始化

在我插入do/while try/catch语句进行异常处理之前,这个公式起作用。 我花了数小时阅读有关声明和初始化变量、局部变量和类变量的内容。我尝试了几种不同的方法,但我没有尝试解决这个问题。 我不知道是什么原因造成的,以及如何修复它。我想弄明白这一点并理解解决方案。 在哪里初始化“totalIn”和“kgs”?我初始化它们为什么? 这些变量由用户通过扫描仪输入的值填充,如果这有任何区别。 请帮忙

公共类类名{
公共静态void main(字符串[]args){
//代码:根据用户输入运行Methodname1();
}
公共静态无效方法名称1(双倍千克,双倍总数){
双千克=千克;
双重总计=总计;
//代码:do/whiletry/catch等。
双子宫肌酐指数;
双英寸制动灯;
InchesToMtrHeight=totalIn*2.54/100;
ImperialToMetricBmi=(千克/(英寸/英寸/英寸/英寸/英寸);
System.out.printf(“\n您的BMI为:%.3f\n”,ImperialToMetricBmi);
}

}
方法名称1的声明不正确。你错过了辩论部分。将其更改为
public static void MethodName1()

,下面是一个示例,解释了您获得的原因以及获得该结果的原因-

public class ClassName {

   public static void main(String[] args) {
   //code: depending on user input runs Methodname1();
   }

      public static void MethodName1 {

        double kgs;
        double totalIn;

        //code: do/while try/catch etc.


        double ImpToMetBmi;
        double InchToMtrH;

        InchToMtrH = totalIn*2.54/100;

        ImpToMetBmi = (kgs/(InchToMtrH*InchToMtrH);

        System.out.printf("\nYour BMI is: %.3f\n" ,ImpToMetBmi);
      }
}
原因很清楚,如果if块中的条件为真,则测试值将用2.0初始化,否则将取消初始化

对此的快速修复方法可能是将测试初始化为某个值(可能为0)

说到这里,要初始化这些变量,您可以执行以下操作-

double test;
if( isTrue){
    test = 2.0d;`enter code here`
} 
// This will give you a error stating that test might have not initialized
double calculate = test * 5.0;

或将其作为方法参数传递,如下所示-

static double kgs;
static double totalIn;
public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
  kgs= sc.nextDouble;
  totalIn = sc.nextDouble();
}

你能分享一些关于你如何初始化代码中变量的更多细节吗。正如我所看到的,您的变量在使用时可能没有初始化。在插入do/while和try/catch代码之前,我只声明了变量和公式。然后我得到了初始化错误。我不知道将它们初始化为何处或什么。无论我尝试什么,我都会犯更多的错误。我希望这是有道理的。我是Java新手,非常困惑——显然:)对不起,这是一个复制粘贴错误。我在Netbeans中的代码是“public static void MethodName1(){”对不起,这是一个复制粘贴错误。我在Netbeans中的代码是“public static void MethodName1()){'为什么需要将传递的参数放入局部变量?您可以直接正确使用它们!我尝试了您的一些建议。我现在的情况是程序甚至无法运行。我试图在不发布所有代码的情况下寻求帮助,这样人们就不必阅读所有代码了(我是一个初学者,我认为它写得很糟糕——这是我的第一个程序!)。我将用完整的代码覆盖原始帖子,因为这比我最初想象的要复杂。尽管代码很长且不专业,但希望您仍能提供帮助:0Thank you@Ashutosh Kumar Sharma这对我有用:静态双kgs;静态双totalIn;公共静态void main(字符串args[]){Scanner sc=new Scanner(System.in);kgs=sc.nextDouble;totalIn=sc.nextDouble();}我仍然有点不确定为什么我只需要声明变量并初始化它们?它们可能会自动初始化?如果您在类级别定义变量,那么它将使用其默认值初始化,即使对于较低范围的变量(如方法级别变量)不会发生这种情况。对于您的问题,您必须更新您的变量可分配到要分配的值。
public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
  double kgs = sc.nextDouble;
  double totalIn = sc.nextDouble();
}

public void yourMethod(double kgs, double totalIn){
  // do whatever you want with above passed variables

}