代码上的Dr Java错误

代码上的Dr Java错误,java,initialization,local-variables,Java,Initialization,Local Variables,这意味着我的局部变量newaccbalance可能尚未初始化。我知道我把它说成了替身。请帮忙 import java.util.*; public class Pg244Problem12 { public static void main(String[] args) { int accnum, minbalance, currentbalance; int acctype; double newaccbalance; Scanner consol

这意味着我的局部变量
newaccbalance
可能尚未初始化。我知道我把它说成了替身。请帮忙

 import java.util.*;

public class Pg244Problem12 {

  public static void main(String[] args) 
  { 

   int accnum, minbalance, currentbalance;
   int acctype;
   double newaccbalance;

   Scanner console = new Scanner(System.in);



   System.out.println("Enter the customer's account number:");
   accnum = console.nextInt();
   System.out.println("Enter the customer's account type by using the number 1 for Checking or 2 for Savings:");
   acctype = console.nextInt();
   System.out.println("Enter the minimum balance the customer's account can have:");
   minbalance = console.nextInt();
   System.out.println("Enter the current balance of the customer's account:");
   currentbalance = console.nextInt();



   // Checkings
    if(acctype == 1 && currentbalance >= (minbalance+5000)){
     newaccbalance = ((currentbalance*.05)*(1/12));
   }
    if (acctype == 1 && currentbalance >= minbalance && currentbalance <  (minbalance+5000)){
     newaccbalance = ((currentbalance*.03)*(1/12)); 
    }
    if (acctype == 1 && currentbalance < minbalance){
     newaccbalance = (currentbalance-25);
  }

   // Savings
    if (acctype == 2 && currentbalance >= minbalance){
      newaccbalance = ((currentbalance*.04)*(1/12));
    }
    if (acctype == 2 && currentbalance < minbalance){
      newaccbalance = (currentbalance - 10);
    }



    System.out.println("The account number is: "+ accnum);
    System.out.println("The account type is: "+ acctype);
    System.out.println("The current balance is: "+ currentbalance);
    System.out.println("The new account balance is: "+ newaccbalance);

  }
}
import java.util.*;
公共类PG244问题12{
公共静态void main(字符串[]args)
{ 
int accnum、minbalance、currentbalance;
int acctype;
双平衡;
扫描仪控制台=新扫描仪(System.in);
System.out.println(“输入客户的账号:”);
accnum=console.nextInt();
System.out.println(“输入客户的帐户类型,使用数字1进行检查,或使用数字2进行储蓄:”;
acctype=console.nextInt();
System.out.println(“输入客户帐户可以拥有的最低余额:”);
minbalance=console.nextInt();
System.out.println(“输入客户账户的当前余额:”);
currentbalance=console.nextInt();
//支票
如果(acctype==1&¤tbalance>=(minbalance+5000)){
新账户余额=((当前余额*.05)*(1/12));
}
如果(acctype==1&¤tbalance>=minbalance&¤tbalance<(minbalance+5000)){
新账户余额=((当前余额*.03)*(1/12));
}
如果(acctype==1&¤tbalance=minbalance){
新账户余额=((当前余额*.04)*(1/12));
}
如果(acctype==2&¤tbalance
首先,声明和初始化不是一回事

双倍余额声明变量

newaccbalance=42正在初始化变量

代码中的问题是编译器无法保证任何if语句都为true,因此,
newaccbalance
可能未初始化

我建议两件事:

首先,将变量初始化为默认值,
double newaccbalance=0
将声明和初始化变量

第二,更改if语句的结构,并使用if-else-if,如下所示:

if (acctype == 1) {
    // For these if statements, acctype is 1 so we don't need to check that again
    if(currentbalance >= (minbalance+5000)){
        newaccbalance = ((currentbalance*.05)*(1/12));
    }
    else if (currentbalance >= minbalance) {
        //  && currentbalance <  (minbalance+5000) will be true because the above if-statement is **not** true
        newaccbalance = ((currentbalance*.03)*(1/12)); 
    }
    else { 
        // if (acctype == 1 && currentbalance < minbalance) would always be true here
        newaccbalance = (currentbalance-25);
    }
}
else if (acctype == 2){
     // Savings
     if (currentbalance >= minbalance) {
          newaccbalance = ((currentbalance*.04)*(1/12));
     }
     else { // currentbalance < minbalance) is always true here
          newaccbalance = (currentbalance - 10);
     }
}
else {
     // acctype is neither 1 or 2, what should we do now? RuntimeError, Catastrophic failure, the monsters are coming! We're screwed!
}
if(acctype==1){
//对于这些if语句,acctype是1,所以我们不需要再次检查它
如果(当前余额>=(最小余额+5000)){
新账户余额=((当前余额*.05)*(1/12));
}
else if(currentbalance>=minbalance){
//&¤tbalance<(minbalance+5000)将为真,因为上述if语句为**非**真
新账户余额=((当前余额*.03)*(1/12));
}
否则{
//if(acctype==1&¤tbalance=minbalance){
新账户余额=((当前余额*.04)*(1/12));
}
否则{//currentbalance
首先,声明和初始化不是一回事

双倍余额声明变量

newaccbalance=42正在初始化变量

代码中的问题是编译器无法保证任何if语句都为true,因此,
newaccbalance
可能未初始化

我建议两件事:

首先,将变量初始化为默认值,
double newaccbalance=0
将声明和初始化变量

第二,更改if语句的结构,并使用if-else-if,如下所示:

if (acctype == 1) {
    // For these if statements, acctype is 1 so we don't need to check that again
    if(currentbalance >= (minbalance+5000)){
        newaccbalance = ((currentbalance*.05)*(1/12));
    }
    else if (currentbalance >= minbalance) {
        //  && currentbalance <  (minbalance+5000) will be true because the above if-statement is **not** true
        newaccbalance = ((currentbalance*.03)*(1/12)); 
    }
    else { 
        // if (acctype == 1 && currentbalance < minbalance) would always be true here
        newaccbalance = (currentbalance-25);
    }
}
else if (acctype == 2){
     // Savings
     if (currentbalance >= minbalance) {
          newaccbalance = ((currentbalance*.04)*(1/12));
     }
     else { // currentbalance < minbalance) is always true here
          newaccbalance = (currentbalance - 10);
     }
}
else {
     // acctype is neither 1 or 2, what should we do now? RuntimeError, Catastrophic failure, the monsters are coming! We're screwed!
}
if(acctype==1){
//对于这些if语句,acctype是1,所以我们不需要再次检查它
如果(当前余额>=(最小余额+5000)){
新账户余额=((当前余额*.05)*(1/12));
}
else if(currentbalance>=minbalance){
//&¤tbalance<(minbalance+5000)将为真,因为上述if语句为**非**真
新账户余额=((当前余额*.03)*(1/12));
}
否则{
//if(acctype==1&¤tbalance=minbalance){
新账户余额=((当前余额*.04)*(1/12));
}
否则{//currentbalance
您正在声明变量。您需要初始化变量

声明是创建变量的位置:

double newaccbalance;
初始化是指为变量指定一个值:

newaccbalance = 0;
因此,您需要做的是:

double newaccbalance = 0.0;
您正在声明您的变量。您需要初始化变量

声明是创建变量的位置:

double newaccbalance;
初始化是指为变量指定一个值:

newaccbalance = 0;
因此,您需要做的是:

double newaccbalance = 0.0;

您的所有作业都包装在
if
控制结构中。如果none条件的计算结果为
true
,则变量将保持未赋值状态。作为
local
变量,它也不会获得默认值

这就是为什么信息说它可能不在