2013-07-29 136 views
0

我需要计算两个位置之间的价格,我有保持区域之间的价格数据结构如下:Java,如何从二维二维数组中找到特定值?

    Washington Niagra Falls New York 
Washington  0,   6.30,   8.30 
Niagra Falls  5.30,  0 ,   5.30 
New York   3.20,  4.30,   0 

如何创建它能够找到基于二维数组中值的方法在字符串X和字符串Y位置?

这里是我到目前为止的代码:

String Location X = "Washington"; 
String Location Y = "New York"; 

String XY = {"Washington", "Niagara Falls", "New York"}; 
//Cost of the trips 
double[][] prices = { 
    {0, 6.30, 8.30}, 
    {5.30, 0, 5.30}, 
    {3.20, 4.30, 0 }, 
}; 

在上述情况下,华盛顿 - >纽约应该是8.30

方法应该是这样:

public double calculateFees(String X, String Y){ 
    //add code here. 

    double fares; 
return fares; 
} 

回答

2

你需要弄清楚哪些数组索引会被应用。

public double calculateFees(String X, String Y){ 
    int xArrIdx=0; 
    for(xArrIdx=0; xArrIdx<XY.length; xArrIdx++){ 
     if(XY[xArrIdx].equals(X)) break; 

    } 
    for(yArrIdx=0; yArrIdx<XY.length; yArrIdx++){ 
     if(XY[yArrIdx].equals(Y)) break; 

    } 

    return prices[xArrIdx][yArrIdx]; 
} 

让该手柄的情况下XY不在阵列作为练习留给读者。

另请确保pricesXY可从calculateFees访问。 XY也应该是String[],而不是String

+0

谢谢,但有一个问题,你如何快速创建方法?我的意思是有没有任何提示/技巧来创建这些方法? – Jack

+0

@Jack不是真的,除了记住所有的积木以及它们如何组合在一起。了解概念是关键。 – hexafraction

0

XY获取X的指标,说i

XY获得索引Y,比如j

使用票价,prices[i][j]

您可能需要循环检查给定字符串的数组XY检查两次。您可以使用从String到Integer索引的HashMap来节省时间。

+0

“从字符串到int索引的HashMap改为”。不行,需要使用'Integer'对象。 – hexafraction

+0

是的,我做了编辑。 –