根据id计算年龄

时间:2021-05-18 01:48:07

标签: java if-statement

public int payment(){

        int Carpayment;
        int hour;
        String type;
        
        if (type == "MyVi")
            Carpayment = 10 * hour;
        else 
            if (type == "Iswara")
                Carpayment = 15 * hour;
        else 
            if (type == "Waja")
                Carpayment = 20 * hour;
        else 
            if (type == "Vios")
                Carpayment = 25 * hour;
        else 
            if (type == "Civic")
                Carpayment = 30 * hour; 
        
        return Carpayment;
     }

当我运行此代码时..错误 Carpayment 可能尚未初始化

3 个答案:

答案 0 :(得分:0)

你可以做的一些整改

  1. 比较 type == "MyVi" ,您不应该将字符串与 == 运算符进行比较,因为它将比较对象,即哈希码比较。 你应该使用 type.equals("MyVi");

  2. 您不应使用局部变量来计算汽车付款,因为它们需要初始化,因此您应该将它们传递给付款方式或将它们用作实例变量。

    public int payment(int Carpayment,int hour,String type){
    
        //int Carpayment;
        //int hour;
        //String type;
    
        if (type == "MyVi")
            Carpayment = 10 * hour;
        else 
            if (type == "Iswara")
                Carpayment = 15 * hour;
        else 
            if (type == "Waja")
                Carpayment = 20 * hour;
        else 
            if (type == "Vios")
                Carpayment = 25 * hour;
        else 
            if (type == "Civic")
                Carpayment = 30 * hour; 
    
        return Carpayment;
     }
    

3.你可以这样做

    Class Car {
       int Carpayment;
       int hour;
       String type;
       Car(int hour,String type) {
       this.hour = hour;
       this.type = type;
       }
       public int payment(){

            if (type == "MyVi")
                Carpayment = 10 * hour;
            else 
                if (type == "Iswara")
                    Carpayment = 15 * hour;
            else 
                if (type == "Waja")
                    Carpayment = 20 * hour;
            else 
                if (type == "Vios")
                    Carpayment = 25 * hour;
            else 
                if (type == "Civic")
                    Carpayment = 30 * hour; 

            return Carpayment;
         }
       }
       Car civic_1 = new Car(4,"Civic");
       System.out.println(civic_1.payment());//Prints the Car payment to be done

答案 1 :(得分:-1)

发生这种情况是因为您没有最后一个 else 子句。因此,您可以通过所有 ifs 并且不要进入任何人。要解决此问题,您可以:

  1. 使用默认值初始化 Carpayment 变量(我认为更好的选择);

    public int  payment(){
     int Carpayment;
             int hour;
             String type;
    
     if (type == "MyVi")
         Carpayment = 10 * hour;
     else 
         if (type == "Iswara")
             Carpayment = 15 * hour;
     else 
         if (type == "Waja")
             Carpayment = 20 * hour;
     else 
         if (type == "Vios")
             Carpayment = 25 * hour;
     else 
         if (type == "Civic")
             Carpayment = 30 * hour; 
    
     return Carpayment;
    }
    

  1. 将最后一个 else 子句放在最后一个 else if 中。

    public int  payment(){
     int Carpayment;
             int hour;
             String type;
    
     if (type == "MyVi")
         Carpayment = 10 * hour;
     else 
         if (type == "Iswara")
             Carpayment = 15 * hour;
     else 
         if (type == "Waja")
             Carpayment = 20 * hour;
     else 
         if (type == "Vios")
             Carpayment = 25 * hour;
     else 
         if (type == "Civic")
             Carpayment = 30 * hour;
     else 
       Carpayment = 0;
    
     return Carpayment;
    }
    

答案 2 :(得分:-1)

局部变量不是默认值初始化的,在初始化之前尝试使用时会抛出编译器时间错误。

因此,在您返回之前初始化 Carpayment。

public int  payment(){
  int Carpayment = 0;
  int hour;
  String type;

 if (type == "MyVi")
    Carpayment = 10 * hour;
 else 
   if (type == "Iswara")
     Carpayment = 15 * hour;
 else 
   if (type == "Waja")
     Carpayment = 20 * hour;
 else 
   if (type == "Vios")
     Carpayment = 25 * hour;
 else 
   if (type == "Civic")
     Carpayment = 30 * hour;

 return Carpayment;
}
相关问题