This question already has answers here:
Java: Error: variable might not have been initialized
                                
                                    (2个答案)
                                
                        
                                4年前关闭。
            
                    
我正在上一个班的一个项目。在其中,我们需要创建一个货币转换器,使用一系列转换率将一种货币转换为另一种货币。但是,我无法让我的程序从数组中获取转换率。

       private static final double[][] rates =
     { {1.0, 0.624514066, 0.588714763, 0.810307 },
       {1.601244959, 1.0, 0.942676548, 1.2975},
       {1.698615463, 1.060809248, 1.0, 1.3764},
       {1.234100162, 0.772200772, 0.726532984, 1.0} };

       public double getFxRate(final String inCurr, final String outCurr){

       int Currency1;
       int Currency2;
       double rate;

       if(inCurr == "CAD"){
           Currency1 = 0;
       }
       if(inCurr == "EUR"){
           Currency1 = 1;
       }
       if(inCurr == "GBP"){
           Currency1 = 2;
       }
       if(inCurr == "USD"){
           Currency1 = 3;
       }
       if(outCurr == "CAD"){
           Currency2 = 0;
       }
       if(outCurr == "EUR"){
           Currency2 = 1;
       }
       if(outCurr == "GBP"){
           Currency2 = 2;
       }
       if(outCurr == "USD"){
           Currency2 = 3;
       }

         rate = rates[Currency1][Currency2];
         return rate;

       }
   }


您可以看到数组以及从数组中获取数字的方法。我收到错误消息,即使if语句清楚地初始化了Currency1和Currency2。谁能看到我在做什么错?

另外,我确定有一种比8个不同的if语句设置Currency1和2的值更好的方法,但是我只是希望程序在担心效率之前就可以工作。如果您也想帮助我,我将不胜感激,但这不是优先事项。

谢谢!

最佳答案

更改这些行

int Currency1;
int Currency2;




int Currency1 = 0;
int Currency2 = 0;


更改类似的比较

outCurr == "USD"


更像

"USD".equals(outCurr)

09-16 19:34