查找里程(Java自學第4天)

輸入格式:java

首先,你會讀到若干個城市的名字。每一個名字都只是一個英文單詞,中間不含空格或其餘符號。當讀到名字爲「###」(三個#號)時,表示城市名字輸入結束,###並非一個城市的名字。若是記讀到的城市名字的數量爲n。數組

而後,你會讀到nxn的一個整數矩陣。第一行的每個數字,表示上述城市名單中第一個城市依次到另外一個城市之間的里程。表中同一個城市之間的里程爲0。spa

最後,你會讀到兩個城市的名字。blog

 

輸出格式:ci

輸出這兩個城市之間的距離。get

 

輸入樣例:it

Hagzou Hugzou Jigxng    ###class

0 1108 708import

1108 0 994容器

708 994 0

Hagzou    Jigxng

 

輸出樣例:

708

-------------------------------分割線:下面代碼--------------------------------------

mport java.util.HashMap;
import java.util.Scanner;

public class 查找里程 {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String x;
        foundLiCheng LC = new foundLiCheng();
        Scanner in = new Scanner(System.in);
        x = in.next();
        while(!x.equals("###"))
        {
            LC.insert(x);
            x = in.next();
        }
        LC.create();
        String a = in.next();
        String b = in.next();
        
        System.out.println(LC.found(a, b));
    }

}

class foundLiCheng
{
    private HashMap<Integer, String> City = new HashMap<Integer, String>();//建立集合容器,用來存城市名和城市對應數組的下標
    private int id = 0; //下標
    private int[][] d = new int[100][100];//建立二維數組,存城市到城市的距離
    //添加城市名
    public void insert(String city)
    {
        City.put(id, city);
        id++;
    }
    //根據輸入的城市數量,建立對應的二維數組存城市到城市的距離
    public void create()
    {
        int[][] LiCheng = new int[City.size()][City.size()];
        Scanner in = new Scanner(System.in);
        for(int i=0;i<City.size();i++)
        {
            for(int j=0;j<City.size();j++)
            {
                LiCheng[i][j] = in.nextInt();
            }
        }
        d = LiCheng;
    }
    /*  */
    public int getSize()
    {
        return id;
    }
    //根據兩個城市名找對應距離
    public int found(String a,String b)
    {
        int x=0,y=0;
        int count=0;
        //經過for each 遍歷 城市名找到對應的數組下標
        for(int key : City.keySet() )
        {
            if(City.get(key).equals(a))
            {
                x = key;
                count++;
            }
            if(City.get(key).equals(b))
            {
                y = key;
                count++;
            }
        }
        //若是兩個都找到 返回對應的距離
        if(count == 2)
        {
            return d[x][y];
        }
        else
        {
            System.out.println("查詢的城市距離沒記錄!");
            return -1;
        }
    }
}

結果:

相關文章
相關標籤/搜索