无法初始化 local/class 个变量
Trouble initializing local/class variables
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);
}
}
对于又长又糟糕的代码,真的很抱歉。我觉得必须全部code/layout都看过才能搞清楚问题
我遇到的错误:
异常...无法编译的源代码 - 变量 totalIn 可能尚未初始化
异常...无法编译的源代码 - 变量 kgs 可能尚未初始化
这个公式在我插入 do/while try/catch 异常处理语句之前有效。
我花了几个小时阅读有关声明和初始化变量、局部变量和 class 变量的内容。我尝试了几种不同的方法,但没有尝试解决问题。
我对造成这种情况的原因以及如何解决它感到困惑。我想弄清楚这一点并了解解决方案。
我在哪里初始化 'totalIn' 和 'kgs'?我将它们初始化为什么?
如果有任何不同,这些变量将由用户通过扫描仪输入的值填充。
请帮忙!
public class ClassName {
public static void main(String[] args) {
//code: depending on user input runs Methodname1();
}
public static void MethodName1(double KGS, double TOTAL) {
double kgs = KGS;
double totalIn = TOTAL;
//code: do/while try/catch etc.
double ImperialToMetricBmi;
double InchesToMtrHeight;
InchesToMtrHeight = totalIn*2.54/100;
ImperialToMetricBmi = (kgs/(InchesToMtrHeight*InchesToMtrHeight));
System.out.printf("\nYour BMI is: %.3f\n" ,ImperialToMetricBmi);
}
}
您基本上可以在声明它们的地方同时初始化 kgs 和 totalIn,但如果该方法将这些值作为参数会更好(截至此时,这两个值都不会被初始化)。此外,您还需要使用这两个参数调用静态方法,例如
double value1 = 123.1;
double value2 = 24
MethodName1(value1, value2)
进一步阅读问题后,我意识到您可能试图在条件语句或循环中初始化值。
简单理解当条件对 运行 语句不满足时会发生什么?
答案是该值永远不会被初始化,这里就是这种情况。
MethodName1
方法声明错误。你错过了争论部分。将其更改为 public static void MethodName1()
.
这是一个示例,它解释了您得到的原因以及为什么得到那个 -
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;
原因很明确,如果 if 块中的条件为真,则测试值将初始化为 2.0,否则它将未初始化。
对此的快速修复可能是将 test 初始化为某个值(可能为 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();
}
或者将它们作为方法参数传递,如下所示 -
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
}
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);
}
}
对于又长又糟糕的代码,真的很抱歉。我觉得必须全部code/layout都看过才能搞清楚问题
我遇到的错误: 异常...无法编译的源代码 - 变量 totalIn 可能尚未初始化 异常...无法编译的源代码 - 变量 kgs 可能尚未初始化
这个公式在我插入 do/while try/catch 异常处理语句之前有效。 我花了几个小时阅读有关声明和初始化变量、局部变量和 class 变量的内容。我尝试了几种不同的方法,但没有尝试解决问题。 我对造成这种情况的原因以及如何解决它感到困惑。我想弄清楚这一点并了解解决方案。 我在哪里初始化 'totalIn' 和 'kgs'?我将它们初始化为什么? 如果有任何不同,这些变量将由用户通过扫描仪输入的值填充。 请帮忙!
public class ClassName {
public static void main(String[] args) {
//code: depending on user input runs Methodname1();
}
public static void MethodName1(double KGS, double TOTAL) {
double kgs = KGS;
double totalIn = TOTAL;
//code: do/while try/catch etc.
double ImperialToMetricBmi;
double InchesToMtrHeight;
InchesToMtrHeight = totalIn*2.54/100;
ImperialToMetricBmi = (kgs/(InchesToMtrHeight*InchesToMtrHeight));
System.out.printf("\nYour BMI is: %.3f\n" ,ImperialToMetricBmi);
}
}
double value1 = 123.1;
double value2 = 24
MethodName1(value1, value2)
进一步阅读问题后,我意识到您可能试图在条件语句或循环中初始化值。 简单理解当条件对 运行 语句不满足时会发生什么? 答案是该值永远不会被初始化,这里就是这种情况。
MethodName1
方法声明错误。你错过了争论部分。将其更改为 public static void MethodName1()
.
这是一个示例,它解释了您得到的原因以及为什么得到那个 -
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;
原因很明确,如果 if 块中的条件为真,则测试值将初始化为 2.0,否则它将未初始化。
对此的快速修复可能是将 test 初始化为某个值(可能为 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();
}
或者将它们作为方法参数传递,如下所示 -
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
}