2013-07-29 138 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

是的,我做了編輯。 –