【问题标题】:calculate age based on id根据id计算年龄
【发布时间】:2021-05-27 12:59:26
【问题描述】:

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 可能尚未初始化

【问题讨论】:

  • 您应该Strings 与== 进行比较,为此使用equalsSee here.

标签: java if-statement


【解决方案1】:

你可以做的一些整改

  1. 比较 type == "MyVi" ,您不应该将 String 与 == 运算符进行比较,因为它将比较对象,即哈希码比较。 你应该使用 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

【讨论】:

    【解决方案2】:

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

    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 if 中加入最后一个 else 子句。

      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;
      }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多